From 5b0c15d8ae3479719055385074773929a4c75767 Mon Sep 17 00:00:00 2001 From: brunota20 Date: Wed, 24 Jun 2026 11:41:25 -0300 Subject: [PATCH] feat(twap): precise polling hints for watch towers `TWAP.getTradeableOrder` now reverts with the precise polling errors already defined on `IConditionalOrder` instead of the generic `OrderNotValid("not within span")` / `"before twap start"` / `"after twap finish"`: - Pre-`t0`: `PollTryAtEpoch(t0, "before first part")` - Post total span: `PollNever("all parts settled")` - Between parts of an in-progress TWAP: `PollTryAtEpoch(nextPartStart, "between parts")` `validate()` is invoked up-front so invalid configurations still revert with their original `OrderNotValid(...)` reasons. `OrderNotValid(NOT_WITHIN_SPAN)` is kept as a defensive fallback (should be unreachable). Watch towers gain the ability to: - Stop polling between parts (retry exactly at the next part's start). - Drop finished TWAPs from their watch set without trial-and-error. - Skip pre-`t0` polling and wake up only when needed. Addresses M2 grant deliverable "enhanced polling interfaces" for the TWAP handler. --- out/Base.sol/CommonBase.json | 1 + out/Base.sol/ScriptBase.json | 1 + out/Base.sol/TestBase.json | 1 + out/Base.t.sol/Base.json | 1 + .../BaseConditionalOrder.json | 1 + out/BaseSwapGuard.sol/BaseSwapGuard.json | 1 + out/CoWProtocol.t.sol/CoWProtocol.json | 1 + out/CoWSettlement.sol/CoWSettlement.json | 1 + .../CompatibilityFallbackHandler.json | 1 + .../BaseComposableCoWTest.json | 1 + .../MirrorConditionalOrder.json | 1 + .../TestConditionalOrderGenerator.json | 1 + .../TestContextSpecifyValue.json | 1 + .../TestNonSafeWallet.json | 1 + .../TestSwapGuard.json | 1 + .../ComposableCoWForwarderTest.json | 1 + .../ComposableCoWGatTest.json | 1 + .../TestExpectedOutCalculator.json | 1 + .../ComposableCoWGuardsTest.json | 1 + .../ComposableCoWStopLossTest.json | 1 + .../ComposableCoWTest.json | 1 + .../ComposableCoWTatTest.json | 1 + .../ComposableCoWTwapTest.json | 1 + .../ComposableCoWLib.json | 1 + .../ConditionalOrdersUtilsLib.json | 1 + out/Context.sol/Context.json | 1 + .../ERC1155TokenReceiver.json | 1 + .../ERC1271Forwarder.json | 1 + out/ERC165Handler.sol/ERC165Handler.json | 1 + out/ERC165Handler.sol/IERC165Handler.json | 1 + out/ERC20.sol/ERC20.json | 1 + .../ERC721TokenReceiver.json | 1 + .../ERC777TokensRecipient.json | 1 + out/Enum.sol/Enum.json | 1 + out/Executor.sol/Executor.json | 1 + out/ExtensibleBase.sol/ExtensibleBase.json | 1 + out/ExtensibleBase.sol/IFallbackMethod.json | 1 + .../IStaticFallbackMethod.json | 1 + out/FallbackHandler.sol/FallbackHandler.json | 1 + out/FallbackHandler.sol/IFallbackHandler.json | 1 + out/FallbackManager.sol/FallbackManager.json | 1 + .../GPv2AllowListAuthentication.json | 1 + .../GPv2Authentication.json | 1 + out/GPv2EIP1271.sol/EIP1271Verifier.json | 1 + out/GPv2EIP1271.sol/GPv2EIP1271.json | 1 + out/GPv2EIP1967.sol/GPv2EIP1967.json | 1 + out/GPv2Interaction.sol/GPv2Interaction.json | 1 + out/GPv2Order.sol/GPv2Order.json | 1 + out/GPv2SafeERC20.sol/GPv2SafeERC20.json | 1 + out/GPv2Settlement.sol/GPv2Settlement.json | 1 + out/GPv2Signing.sol/GPv2Signing.json | 1 + out/GPv2Trade.sol/GPv2Trade.json | 1 + .../GPv2TradeEncoder.json | 1 + out/GPv2Transfer.sol/GPv2Transfer.json | 1 + .../GPv2VaultRelayer.json | 1 + out/GuardManager.sol/BaseGuard.json | 1 + out/GuardManager.sol/Guard.json | 1 + out/GuardManager.sol/GuardManager.json | 1 + out/HandlerContext.sol/HandlerContext.json | 1 + .../IAggregatorV3Interface.json | 1 + out/IERC165.sol/IERC165.json | 1 + out/IERC20.sol/IERC20.json | 1 + out/IERC20Metadata.sol/IERC20Metadata.json | 1 + out/IMulticall3.sol/IMulticall3.json | 1 + .../IProxyCreationCallback.json | 1 + .../ISignatureValidator.json | 1 + .../ISignatureValidatorConstants.json | 1 + out/IVault.sol/IVault.json | 1 + out/Initializable.sol/Initializable.json | 1 + out/MarshalLib.sol/MarshalLib.json | 1 + out/Merkle.sol/Merkle.json | 1 + out/MerkleProof.sol/MerkleProof.json | 1 + out/Milkman.sol/IExpectedOutCalculator.json | 1 + out/ModuleManager.sol/ModuleManager.json | 1 + out/MultiSend.sol/MultiSend.json | 1 + out/MurkyBase.sol/MurkyBase.json | 1 + .../NativeCurrencyPaymentFallback.json | 1 + out/OwnerManager.sol/OwnerManager.json | 1 + out/ReentrancyGuard.sol/ReentrancyGuard.json | 1 + out/Safe.sol/Safe.json | 1 + out/Safe.t.sol/SafeHelper.json | 1 + out/SafeCast.sol/SafeCast.json | 1 + out/SafeLib.t.sol/SafeLib.json | 1 + out/SafeMath.sol/SafeMath.json | 1 + out/SafeProxy.sol/IProxy.json | 1 + out/SafeProxy.sol/SafeProxy.json | 1 + .../SafeProxyFactory.json | 1 + out/SafeStorage.sol/SafeStorage.json | 1 + out/Script.sol/Script.json | 1 + .../SecuredTokenTransfer.json | 1 + out/SelfAuthorized.sol/SelfAuthorized.json | 1 + out/SignMessageLib.sol/SignMessageLib.json | 1 + .../SignatureDecoder.json | 1 + out/SignatureVerifierMuxer.sol/EIP712.json | 1 + out/SignatureVerifierMuxer.sol/ERC1271.json | 1 + .../ISafeSignatureVerifier.json | 1 + .../ISignatureVerifierMuxer.json | 1 + .../SignatureVerifierMuxer.json | 1 + out/Singleton.sol/Singleton.json | 1 + out/StdAssertions.sol/StdAssertions.json | 1 + out/StdChains.sol/StdChains.json | 1 + out/StdCheats.sol/StdCheats.json | 1 + out/StdCheats.sol/StdCheatsSafe.json | 1 + out/StdError.sol/stdError.json | 1 + out/StdInvariant.sol/StdInvariant.json | 1 + out/StdJson.sol/stdJson.json | 1 + out/StdMath.sol/stdMath.json | 1 + out/StdStorage.sol/stdStorage.json | 1 + out/StdStorage.sol/stdStorageSafe.json | 1 + out/StdStyle.sol/StdStyle.json | 1 + out/StdUtils.sol/StdUtils.json | 1 + .../StorageAccessible.json | 1 + .../ViewStorageAccessible.json | 1 + out/TestAccountLib.t.sol/TestAccountLib.json | 1 + .../TokenCallbackHandler.json | 1 + out/TokenCallbacks.sol/TokenCallbacks.json | 1 + out/Tokens.t.sol/MockERC20.json | 1 + out/Tokens.t.sol/Tokens.json | 1 + out/Vm.sol/Vm.json | 1 + out/Vm.sol/VmSafe.json | 1 + out/build-info/40d69ef3de78d85c.json | 1 + out/build-info/6d46d278da0af5dc.json | 1 + out/build-info/a1f244ce6860c8a1.json | 1 + out/console.sol/console.json | 1 + out/console2.sol/console2.json | 1 + .../DeployAnvilStack.json | 1 + .../DeployComposableCoW.json | 1 + .../DeployExtensibleFallbackHandler.json | 1 + .../DeployOrderTypes.json | 1 + .../DeployProdStack.json | 1 + .../DeployValueFactories.json | 1 + out/interfaces/IERC20.sol/IERC20.json | 1 + out/libraries/SafeCast.sol/SafeCast.json | 1 + out/libraries/SafeMath.sol/SafeMath.json | 1 + .../StorageAccessible.json | 1 + .../SubmitSingleOrder.json | 1 + out/test.sol/DSTest.json | 1 + out/test.sol/Test.json | 1 + src/types/twap/TWAP.sol | 66 +++++++++- test/ComposableCoW.twap.t.sol | 117 +++++++++++++++--- 140 files changed, 306 insertions(+), 15 deletions(-) create mode 100644 out/Base.sol/CommonBase.json create mode 100644 out/Base.sol/ScriptBase.json create mode 100644 out/Base.sol/TestBase.json create mode 100644 out/Base.t.sol/Base.json create mode 100644 out/BaseConditionalOrder.sol/BaseConditionalOrder.json create mode 100644 out/BaseSwapGuard.sol/BaseSwapGuard.json create mode 100644 out/CoWProtocol.t.sol/CoWProtocol.json create mode 100644 out/CoWSettlement.sol/CoWSettlement.json create mode 100644 out/CompatibilityFallbackHandler.sol/CompatibilityFallbackHandler.json create mode 100644 out/ComposableCoW.base.t.sol/BaseComposableCoWTest.json create mode 100644 out/ComposableCoW.base.t.sol/MirrorConditionalOrder.json create mode 100644 out/ComposableCoW.base.t.sol/TestConditionalOrderGenerator.json create mode 100644 out/ComposableCoW.base.t.sol/TestContextSpecifyValue.json create mode 100644 out/ComposableCoW.base.t.sol/TestNonSafeWallet.json create mode 100644 out/ComposableCoW.base.t.sol/TestSwapGuard.json create mode 100644 out/ComposableCoW.forwarder.t.sol/ComposableCoWForwarderTest.json create mode 100644 out/ComposableCoW.gat.t.sol/ComposableCoWGatTest.json create mode 100644 out/ComposableCoW.gat.t.sol/TestExpectedOutCalculator.json create mode 100644 out/ComposableCoW.guards.t.sol/ComposableCoWGuardsTest.json create mode 100644 out/ComposableCoW.stoploss.t.sol/ComposableCoWStopLossTest.json create mode 100644 out/ComposableCoW.t.sol/ComposableCoWTest.json create mode 100644 out/ComposableCoW.tat.t.sol/ComposableCoWTatTest.json create mode 100644 out/ComposableCoW.twap.t.sol/ComposableCoWTwapTest.json create mode 100644 out/ComposableCoWLib.t.sol/ComposableCoWLib.json create mode 100644 out/ConditionalOrdersUtilsLib.sol/ConditionalOrdersUtilsLib.json create mode 100644 out/Context.sol/Context.json create mode 100644 out/ERC1155TokenReceiver.sol/ERC1155TokenReceiver.json create mode 100644 out/ERC1271Forwarder.sol/ERC1271Forwarder.json create mode 100644 out/ERC165Handler.sol/ERC165Handler.json create mode 100644 out/ERC165Handler.sol/IERC165Handler.json create mode 100644 out/ERC20.sol/ERC20.json create mode 100644 out/ERC721TokenReceiver.sol/ERC721TokenReceiver.json create mode 100644 out/ERC777TokensRecipient.sol/ERC777TokensRecipient.json create mode 100644 out/Enum.sol/Enum.json create mode 100644 out/Executor.sol/Executor.json create mode 100644 out/ExtensibleBase.sol/ExtensibleBase.json create mode 100644 out/ExtensibleBase.sol/IFallbackMethod.json create mode 100644 out/ExtensibleBase.sol/IStaticFallbackMethod.json create mode 100644 out/FallbackHandler.sol/FallbackHandler.json create mode 100644 out/FallbackHandler.sol/IFallbackHandler.json create mode 100644 out/FallbackManager.sol/FallbackManager.json create mode 100644 out/GPv2AllowListAuthentication.sol/GPv2AllowListAuthentication.json create mode 100644 out/GPv2Authentication.sol/GPv2Authentication.json create mode 100644 out/GPv2EIP1271.sol/EIP1271Verifier.json create mode 100644 out/GPv2EIP1271.sol/GPv2EIP1271.json create mode 100644 out/GPv2EIP1967.sol/GPv2EIP1967.json create mode 100644 out/GPv2Interaction.sol/GPv2Interaction.json create mode 100644 out/GPv2Order.sol/GPv2Order.json create mode 100644 out/GPv2SafeERC20.sol/GPv2SafeERC20.json create mode 100644 out/GPv2Settlement.sol/GPv2Settlement.json create mode 100644 out/GPv2Signing.sol/GPv2Signing.json create mode 100644 out/GPv2Trade.sol/GPv2Trade.json create mode 100644 out/GPv2TradeEncoder.sol/GPv2TradeEncoder.json create mode 100644 out/GPv2Transfer.sol/GPv2Transfer.json create mode 100644 out/GPv2VaultRelayer.sol/GPv2VaultRelayer.json create mode 100644 out/GuardManager.sol/BaseGuard.json create mode 100644 out/GuardManager.sol/Guard.json create mode 100644 out/GuardManager.sol/GuardManager.json create mode 100644 out/HandlerContext.sol/HandlerContext.json create mode 100644 out/IAggregatorV3Interface.sol/IAggregatorV3Interface.json create mode 100644 out/IERC165.sol/IERC165.json create mode 100644 out/IERC20.sol/IERC20.json create mode 100644 out/IERC20Metadata.sol/IERC20Metadata.json create mode 100644 out/IMulticall3.sol/IMulticall3.json create mode 100644 out/IProxyCreationCallback.sol/IProxyCreationCallback.json create mode 100644 out/ISignatureValidator.sol/ISignatureValidator.json create mode 100644 out/ISignatureValidator.sol/ISignatureValidatorConstants.json create mode 100644 out/IVault.sol/IVault.json create mode 100644 out/Initializable.sol/Initializable.json create mode 100644 out/MarshalLib.sol/MarshalLib.json create mode 100644 out/Merkle.sol/Merkle.json create mode 100644 out/MerkleProof.sol/MerkleProof.json create mode 100644 out/Milkman.sol/IExpectedOutCalculator.json create mode 100644 out/ModuleManager.sol/ModuleManager.json create mode 100644 out/MultiSend.sol/MultiSend.json create mode 100644 out/MurkyBase.sol/MurkyBase.json create mode 100644 out/NativeCurrencyPaymentFallback.sol/NativeCurrencyPaymentFallback.json create mode 100644 out/OwnerManager.sol/OwnerManager.json create mode 100644 out/ReentrancyGuard.sol/ReentrancyGuard.json create mode 100644 out/Safe.sol/Safe.json create mode 100644 out/Safe.t.sol/SafeHelper.json create mode 100644 out/SafeCast.sol/SafeCast.json create mode 100644 out/SafeLib.t.sol/SafeLib.json create mode 100644 out/SafeMath.sol/SafeMath.json create mode 100644 out/SafeProxy.sol/IProxy.json create mode 100644 out/SafeProxy.sol/SafeProxy.json create mode 100644 out/SafeProxyFactory.sol/SafeProxyFactory.json create mode 100644 out/SafeStorage.sol/SafeStorage.json create mode 100644 out/Script.sol/Script.json create mode 100644 out/SecuredTokenTransfer.sol/SecuredTokenTransfer.json create mode 100644 out/SelfAuthorized.sol/SelfAuthorized.json create mode 100644 out/SignMessageLib.sol/SignMessageLib.json create mode 100644 out/SignatureDecoder.sol/SignatureDecoder.json create mode 100644 out/SignatureVerifierMuxer.sol/EIP712.json create mode 100644 out/SignatureVerifierMuxer.sol/ERC1271.json create mode 100644 out/SignatureVerifierMuxer.sol/ISafeSignatureVerifier.json create mode 100644 out/SignatureVerifierMuxer.sol/ISignatureVerifierMuxer.json create mode 100644 out/SignatureVerifierMuxer.sol/SignatureVerifierMuxer.json create mode 100644 out/Singleton.sol/Singleton.json create mode 100644 out/StdAssertions.sol/StdAssertions.json create mode 100644 out/StdChains.sol/StdChains.json create mode 100644 out/StdCheats.sol/StdCheats.json create mode 100644 out/StdCheats.sol/StdCheatsSafe.json create mode 100644 out/StdError.sol/stdError.json create mode 100644 out/StdInvariant.sol/StdInvariant.json create mode 100644 out/StdJson.sol/stdJson.json create mode 100644 out/StdMath.sol/stdMath.json create mode 100644 out/StdStorage.sol/stdStorage.json create mode 100644 out/StdStorage.sol/stdStorageSafe.json create mode 100644 out/StdStyle.sol/StdStyle.json create mode 100644 out/StdUtils.sol/StdUtils.json create mode 100644 out/StorageAccessible.sol/StorageAccessible.json create mode 100644 out/StorageAccessible.sol/ViewStorageAccessible.json create mode 100644 out/TestAccountLib.t.sol/TestAccountLib.json create mode 100644 out/TokenCallbackHandler.sol/TokenCallbackHandler.json create mode 100644 out/TokenCallbacks.sol/TokenCallbacks.json create mode 100644 out/Tokens.t.sol/MockERC20.json create mode 100644 out/Tokens.t.sol/Tokens.json create mode 100644 out/Vm.sol/Vm.json create mode 100644 out/Vm.sol/VmSafe.json create mode 100644 out/build-info/40d69ef3de78d85c.json create mode 100644 out/build-info/6d46d278da0af5dc.json create mode 100644 out/build-info/a1f244ce6860c8a1.json create mode 100644 out/console.sol/console.json create mode 100644 out/console2.sol/console2.json create mode 100644 out/deploy_AnvilStack.s.sol/DeployAnvilStack.json create mode 100644 out/deploy_ComposableCoW.s.sol/DeployComposableCoW.json create mode 100644 out/deploy_ExtensibleFallbackHandler.s.sol/DeployExtensibleFallbackHandler.json create mode 100644 out/deploy_OrderTypes.s.sol/DeployOrderTypes.json create mode 100644 out/deploy_ProdStack.s.sol/DeployProdStack.json create mode 100644 out/deploy_ValueFactories.s.sol/DeployValueFactories.json create mode 100644 out/interfaces/IERC20.sol/IERC20.json create mode 100644 out/libraries/SafeCast.sol/SafeCast.json create mode 100644 out/libraries/SafeMath.sol/SafeMath.json create mode 100644 out/mixins/StorageAccessible.sol/StorageAccessible.json create mode 100644 out/submit_SingleOrder.s.sol/SubmitSingleOrder.json create mode 100644 out/test.sol/DSTest.json create mode 100644 out/test.sol/Test.json diff --git a/out/Base.sol/CommonBase.json b/out/Base.sol/CommonBase.json new file mode 100644 index 0000000..7a8ded8 --- /dev/null +++ b/out/Base.sol/CommonBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/Base.sol/ScriptBase.json b/out/Base.sol/ScriptBase.json new file mode 100644 index 0000000..ae7ef50 --- /dev/null +++ b/out/Base.sol/ScriptBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/Base.sol/TestBase.json b/out/Base.sol/TestBase.json new file mode 100644 index 0000000..b86f0ee --- /dev/null +++ b/out/Base.sol/TestBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"TestBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/Base.t.sol/Base.json b/out/Base.t.sol/Base.json new file mode 100644 index 0000000..8391d8d --- /dev/null +++ b/out/Base.t.sol/Base.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","handler()":"c80916d4","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Base.t.sol\":\"Base\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"setUp()":{"details":"Sets up the CoW Protocol test environment."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Base.t.sol":"Base"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":108} \ No newline at end of file diff --git a/out/BaseConditionalOrder.sol/BaseConditionalOrder.json b/out/BaseConditionalOrder.sol/BaseConditionalOrder.json new file mode 100644 index 0000000..e07bdaf --- /dev/null +++ b/out/BaseConditionalOrder.sol/BaseConditionalOrder.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getTradeableOrder","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"ctx","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"},{"name":"offchainInput","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verify","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"},{"name":"ctx","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"},{"name":"offchainInput","type":"bytes","internalType":"bytes"},{"name":"","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"view"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"error","name":"OrderNotValid","inputs":[{"name":"","type":"string","internalType":"string"}]},{"type":"error","name":"PollNever","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryAtBlock","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryAtEpoch","inputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryNextBlock","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getTradeableOrder(address,address,bytes32,bytes,bytes)":"b8296fc4","supportsInterface(bytes4)":"01ffc9a7","verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))":"14a2a784"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"OrderNotValid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollNever\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryAtBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryAtEpoch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryNextBlock\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ctx\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainInput\",\"type\":\"bytes\"}],\"name\":\"getTradeableOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"ctx\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainInput\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"details\":\"Enforces the order verification logic for conditional orders, allowing developers to focus on the logic for generating the tradeable order.\",\"errors\":{\"OrderNotValid(string)\":[{\"details\":\"This error is returned by the `getTradeableOrder` function if the order condition is not met. A parameter of `string` type is included to allow the caller to specify the reason for the failure.\"}]},\"events\":{\"ConditionalOrderCreated(address,(address,bytes32,bytes))\":{\"details\":\"This event is emitted when a new conditional order is created.\",\"params\":{\"owner\":\"the address that has created the conditional order\",\"params\":\"the address / salt / data of the conditional order\"}}},\"kind\":\"dev\",\"methods\":{\"getTradeableOrder(address,address,bytes32,bytes,bytes)\":{\"details\":\"Set the visibility of this function to `public` to allow `verify` to call it.\",\"params\":{\"ctx\":\"the context of the order (bytes32(0) if merkle tree is used, otherwise the H(params))\",\"offchainInput\":\"dynamic off-chain input for a discrete order cut from this conditional order\",\"owner\":\"the contract who is the owner of the order\",\"sender\":\"the `msg.sender` of the parent `isValidSignature` call\",\"staticInput\":\"the static input for all discrete orders cut from this conditional order\"},\"returns\":{\"_0\":\"the tradeable order for submission to the CoW Protocol API\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))\":{\"details\":\"As an order generator, the `GPv2Order.Data` passed as a parameter is ignored / not validated.\",\"params\":{\"_hash\":\"the hash of the order\",\"ctx\":\"the context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet\",\"domainSeparator\":\"the domain separator used to sign the order\",\"offchainInput\":\"dynamic off-chain input for a discrete order cut from this conditional order\",\"order\":\"`GPv2Order.Data` of a discrete order to be verified (if *not* an `IConditionalOrderGenerator`).\",\"owner\":\"the contract who is the owner of the order\",\"sender\":\"the `msg.sender` of the transaction\",\"staticInput\":\"the static input for all discrete orders cut from this conditional order\"}}},\"title\":\"Base logic for conditional orders.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))\":{\"notice\":\"Verify if a given discrete order is valid.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BaseConditionalOrder.sol\":\"BaseConditionalOrder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string"}],"type":"error","name":"OrderNotValid"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollNever"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryAtBlock"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryAtEpoch"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryNextBlock"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"ctx","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"},{"internalType":"bytes","name":"offchainInput","type":"bytes"}],"stateMutability":"view","type":"function","name":"getTradeableOrder","outputs":[{"internalType":"struct GPv2Order.Data","name":"","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"bytes32","name":"ctx","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"},{"internalType":"bytes","name":"offchainInput","type":"bytes"},{"internalType":"struct GPv2Order.Data","name":"","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"verify"}],"devdoc":{"kind":"dev","methods":{"getTradeableOrder(address,address,bytes32,bytes,bytes)":{"details":"Set the visibility of this function to `public` to allow `verify` to call it.","params":{"ctx":"the context of the order (bytes32(0) if merkle tree is used, otherwise the H(params))","offchainInput":"dynamic off-chain input for a discrete order cut from this conditional order","owner":"the contract who is the owner of the order","sender":"the `msg.sender` of the parent `isValidSignature` call","staticInput":"the static input for all discrete orders cut from this conditional order"},"returns":{"_0":"the tradeable order for submission to the CoW Protocol API"}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas."},"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))":{"details":"As an order generator, the `GPv2Order.Data` passed as a parameter is ignored / not validated.","params":{"_hash":"the hash of the order","ctx":"the context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet","domainSeparator":"the domain separator used to sign the order","offchainInput":"dynamic off-chain input for a discrete order cut from this conditional order","order":"`GPv2Order.Data` of a discrete order to be verified (if *not* an `IConditionalOrderGenerator`).","owner":"the contract who is the owner of the order","sender":"the `msg.sender` of the transaction","staticInput":"the static input for all discrete orders cut from this conditional order"}}},"version":1},"userdoc":{"kind":"user","methods":{"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))":{"notice":"Verify if a given discrete order is valid."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/BaseConditionalOrder.sol":"BaseConditionalOrder"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/BaseSwapGuard.sol/BaseSwapGuard.json b/out/BaseSwapGuard.sol/BaseSwapGuard.json new file mode 100644 index 0000000..8aee90a --- /dev/null +++ b/out/BaseSwapGuard.sol/BaseSwapGuard.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verify","inputs":[{"name":"order","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]},{"name":"ctx","type":"bytes32","internalType":"bytes32"},{"name":"params","type":"tuple","internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]},{"name":"offchainInput","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7","verify((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32),bytes32,(address,bytes32,bytes),bytes)":"f9ae35a2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"ctx\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"offchainInput\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"verify((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32),bytes32,(address,bytes32,bytes),bytes)\":{\"params\":{\"ctx\":\"The context of the order (bytes32(0) if a merkle tree is used, otherwise H(params))\",\"offchainInput\":\"Any offchain input to verify.\",\"order\":\"The order to verify.\",\"params\":\"The conditional order parameters (handler, salt, staticInput).\"},\"returns\":{\"_0\":\"True if the order is allowed to be settled via CoW Protocol.\"}}},\"title\":\"An abstract base contract for Swap Guards to inherit from\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"verify((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32),bytes32,(address,bytes32,bytes),bytes)\":{\"notice\":\"Verify that the order is allowed to be settled via CoW Protocol.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/guards/BaseSwapGuard.sol\":\"BaseSwapGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct GPv2Order.Data","name":"order","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]},{"internalType":"bytes32","name":"ctx","type":"bytes32"},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"internalType":"bytes","name":"offchainInput","type":"bytes"}],"stateMutability":"view","type":"function","name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas."},"verify((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32),bytes32,(address,bytes32,bytes),bytes)":{"params":{"ctx":"The context of the order (bytes32(0) if a merkle tree is used, otherwise H(params))","offchainInput":"Any offchain input to verify.","order":"The order to verify.","params":"The conditional order parameters (handler, salt, staticInput)."},"returns":{"_0":"True if the order is allowed to be settled via CoW Protocol."}}},"version":1},"userdoc":{"kind":"user","methods":{"verify((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32),bytes32,(address,bytes32,bytes),bytes)":{"notice":"Verify that the order is allowed to be settled via CoW Protocol."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/guards/BaseSwapGuard.sol":"BaseSwapGuard"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"}},"version":1},"id":91} \ No newline at end of file diff --git a/out/CoWProtocol.t.sol/CoWProtocol.json b/out/CoWProtocol.t.sol/CoWProtocol.json new file mode 100644 index 0000000..48fc8d3 --- /dev/null +++ b/out/CoWProtocol.t.sol/CoWProtocol.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","relayer()":"8406c079","setUp()":"0a9254e4","settlement()":"51160630","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"}},\"title\":\"CoW Protocol - A helper contract for local integration testing with CoW Protocol.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/CoWProtocol.t.sol\":\"CoWProtocol\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"setUp()":{"details":"Sets up the CoW Protocol test environment."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/CoWProtocol.t.sol":"CoWProtocol"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":117} \ No newline at end of file diff --git a/out/CoWSettlement.sol/CoWSettlement.json b/out/CoWSettlement.sol/CoWSettlement.json new file mode 100644 index 0000000..a8862d9 --- /dev/null +++ b/out/CoWSettlement.sol/CoWSettlement.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"domainSeparator()":"f698da25"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/vendored/CoWSettlement.sol\":\"CoWSettlement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/vendored/CoWSettlement.sol":"CoWSettlement"},"evmVersion":"paris","libraries":{}},"sources":{"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"}},"version":1},"id":106} \ No newline at end of file diff --git a/out/CompatibilityFallbackHandler.sol/CompatibilityFallbackHandler.json b/out/CompatibilityFallbackHandler.sol/CompatibilityFallbackHandler.json new file mode 100644 index 0000000..f7718da --- /dev/null +++ b/out/CompatibilityFallbackHandler.sol/CompatibilityFallbackHandler.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"encodeMessageDataForSafe","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getMessageHash","inputs":[{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getMessageHashForSafe","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getModules","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_dataHash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_data","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"simulate","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"response","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokensReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033","sourceMap":"343:7385:60:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033","sourceMap":"343:7385:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:199:63;;;;;;:::i;:::-;;;;;;;;;;;;1977:306;;;;;;:::i;:::-;;:::i;:::-;;;2332:14:124;;2325:22;2307:41;;2295:2;2280:18;1977:306:63;;;;;;;;1925:157:60;;;;;;:::i;:::-;;:::i;:::-;;;3952:25:124;;;3940:2;3925:18;1925:157:60;3806:177:124;1301:143:63;;;;;;:::i;:::-;1420:17;1301:143;;;;;;;;;;;4921:66:124;4909:79;;;4891:98;;4879:2;4864:18;1301:143:63;4747:248:124;3374:350:60;;;;;;:::i;:::-;;:::i;1187:580::-;;;;;;:::i;:::-;;:::i;2331:307::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2868:168::-;;;;;;:::i;:::-;;:::i;3826:259::-;;;:::i;:::-;;;;;;;:::i;948:226:63:-;;;;;;:::i;:::-;1150:17;948:226;;;;;;;;;;;4664:3062:60;;;;;;:::i;:::-;;:::i;656:153:63:-;;;;;;:::i;:::-;785:17;656:153;;;;;;;;;1977:306;2064:4;2099:53;;;2114:38;2099:53;;:121;;-1:-1:-1;2168:52:63;;;2183:37;2168:52;2099:121;:177;;;-1:-1:-1;2236:40:63;;;2251:25;2236:40;2099:177;2080:196;1977:306;-1:-1:-1;;1977:306:63:o;1925:157:60:-;1992:7;2018:57;2053:10;2067:7;2018:21;:57::i;3374:350::-;3602:21;;;;;;;3952:25:124;;;3602:21:60;;;;;;;;;;3925:18:124;;;3602:21:60;;;;3575:61;;;;3469:6;;3539:10;;3469:6;;3539:10;;3575:26;;:61;;3625:10;;;;3575:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3560:76;-1:-1:-1;3654:28:60;;;3663:19;3654:28;3653:64;;3715:1;3653:64;;;3686:19;3653:64;3646:71;;;;3374:350;;;;;;:::o;1187:580::-;1288:6;1366:10;1288:6;1415:37;1366:10;1446:5;1415:24;:37::i;:::-;1484:22;;;;;;1520:17;;1388:64;;-1:-1:-1;1484:22:60;1462:19;1520:22;1516:209;;1566:32;;;;;;;;3952:25:124;;;1566:19:60;;;;;;3925:18:124;;1566:32:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1602:1;1566:37;1558:67;;;;;;;12234:2:124;1558:67:60;;;12216:21:124;12273:2;12253:18;;;12246:30;12312:19;12292:18;;;12285:47;12349:18;;1558:67:60;;;;;;;;1516:209;;;1656:58;;;;;:20;;;;;;:58;;1677:11;;1690;;1703:10;;1656:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1516:209;-1:-1:-1;1741:19:60;;1187:580;-1:-1:-1;;;;;1187:580:60:o;2331:307::-;2419:12;2443:23;525:66;2490:17;;2519:7;2509:18;;;;;;2479:49;;;;;;;;13005:25:124;;;13061:2;13046:18;;13039:34;12993:2;12978:18;;12831:248;2479:49:60;;;;;;;;;;;;;2469:60;;;;;;2443:86;;2570:4;2563:12;;2584:4;2577:12;;2591:4;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2546:85;;13492:66:124;13579:15;;;2546:85:60;;;13567:28:124;13624:15;;;;13611:11;;;13604:36;13656:11;;;13649:27;13692:12;;;13685:28;;;13729:12;;2546:85:60;;;;;;;;;;;;2539:92;;;2331:307;;;;:::o;2868:168::-;2953:7;2989:39;3014:4;3020:7;2989:24;:39::i;:::-;2979:50;;;;;;2972:57;;2868:168;;;;:::o;3826:259::-;4010:46;;;;;747:3;4010:46;;;13935:74:124;4053:2:60;14025:18:124;;;14018:34;3871:16:60;;3959:10;;3934:9;;3959:10;;4010:24;;13908:18:124;;4010:46:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3981:75:60;3826:259;-1:-1:-1;;;3826:259:60:o;4664:3062::-;4756:21;5157:4;5151:11;5351:18;5333:16;5326:44;5835:4;5819:14;5815:25;5809:4;5802;5784:16;5780:27;5767:74;6974:4;6948;6466:14;6428:16;6405:1;6375:8;6248:5;6222:774;6201:809;;7445:4;7427:16;7423:27;7481:4;7475:11;7463:23;;7526:12;7516:8;7512:27;7506:4;7499:41;7584:12;7578:4;7568:8;7553:44;;7627:4;7621:11;7611:99;;7686:8;7680:15;7673:4;7663:8;7659:19;7652:44;14:154:124;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:347::-;224:8;234:6;288:3;281:4;273:6;269:17;265:27;255:55;;306:1;303;296:12;255:55;-1:-1:-1;329:20:124;;372:18;361:30;;358:50;;;404:1;401;394:12;358:50;441:4;433:6;429:17;417:29;;493:3;486:4;477:6;469;465:19;461:30;458:39;455:59;;;510:1;507;500:12;455:59;173:347;;;;;:::o;525:1205::-;651:6;659;667;675;683;691;699;707;760:3;748:9;739:7;735:23;731:33;728:53;;;777:1;774;767:12;728:53;816:9;803:23;835:31;860:5;835:31;:::i;:::-;885:5;-1:-1:-1;942:2:124;927:18;;914:32;955:33;914:32;955:33;:::i;:::-;1007:7;-1:-1:-1;1066:2:124;1051:18;;1038:32;1079:33;1038:32;1079:33;:::i;:::-;1131:7;-1:-1:-1;1185:2:124;1170:18;;1157:32;;-1:-1:-1;1240:3:124;1225:19;;1212:33;1264:18;1294:14;;;1291:34;;;1321:1;1318;1311:12;1291:34;1360:58;1410:7;1401:6;1390:9;1386:22;1360:58;:::i;:::-;1437:8;;-1:-1:-1;1334:84:124;-1:-1:-1;1525:3:124;1510:19;;1497:33;;-1:-1:-1;1542:16:124;;;1539:36;;;1571:1;1568;1561:12;1539:36;;1610:60;1662:7;1651:8;1640:9;1636:24;1610:60;:::i;:::-;525:1205;;;;-1:-1:-1;525:1205:124;;-1:-1:-1;525:1205:124;;;;;;1689:8;-1:-1:-1;;;525:1205:124:o;1735:177::-;1820:66;1813:5;1809:78;1802:5;1799:89;1789:117;;1902:1;1899;1892:12;1917:245;1975:6;2028:2;2016:9;2007:7;2003:23;1999:32;1996:52;;;2044:1;2041;2034:12;1996:52;2083:9;2070:23;2102:30;2126:5;2102:30;:::i;2359:184::-;2411:77;2408:1;2401:88;2508:4;2505:1;2498:15;2532:4;2529:1;2522:15;2548:334;2619:2;2613:9;2675:2;2665:13;;2680:66;2661:86;2649:99;;2778:18;2763:34;;2799:22;;;2760:62;2757:88;;;2825:18;;:::i;:::-;2861:2;2854:22;2548:334;;-1:-1:-1;2548:334:124:o;2887:589::-;2929:5;2982:3;2975:4;2967:6;2963:17;2959:27;2949:55;;3000:1;2997;2990:12;2949:55;3036:6;3023:20;3062:18;3058:2;3055:26;3052:52;;;3084:18;;:::i;:::-;3128:114;3236:4;3167:66;3160:4;3156:2;3152:13;3148:86;3144:97;3128:114;:::i;:::-;3267:2;3258:7;3251:19;3313:3;3306:4;3301:2;3293:6;3289:15;3285:26;3282:35;3279:55;;;3330:1;3327;3320:12;3279:55;3395:2;3388:4;3380:6;3376:17;3369:4;3360:7;3356:18;3343:55;3443:1;3418:16;;;3436:4;3414:27;3407:38;;;;3422:7;2887:589;-1:-1:-1;;;2887:589:124:o;3481:320::-;3549:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:52;;;3618:1;3615;3608:12;3570:52;3658:9;3645:23;3691:18;3683:6;3680:30;3677:50;;;3723:1;3720;3713:12;3677:50;3746:49;3787:7;3778:6;3767:9;3763:22;3746:49;:::i;:::-;3736:59;3481:320;-1:-1:-1;;;;3481:320:124:o;3988:754::-;4085:6;4093;4101;4109;4117;4170:3;4158:9;4149:7;4145:23;4141:33;4138:53;;;4187:1;4184;4177:12;4138:53;4226:9;4213:23;4245:31;4270:5;4245:31;:::i;:::-;4295:5;-1:-1:-1;4352:2:124;4337:18;;4324:32;4365:33;4324:32;4365:33;:::i;:::-;4417:7;-1:-1:-1;4471:2:124;4456:18;;4443:32;;-1:-1:-1;4526:2:124;4511:18;;4498:32;4553:18;4542:30;;4539:50;;;4585:1;4582;4575:12;4539:50;4624:58;4674:7;4665:6;4654:9;4650:22;4624:58;:::i;:::-;3988:754;;;;-1:-1:-1;3988:754:124;;-1:-1:-1;4701:8:124;;4598:84;3988:754;-1:-1:-1;;;3988:754:124:o;5000:477::-;5079:6;5087;5095;5148:2;5136:9;5127:7;5123:23;5119:32;5116:52;;;5164:1;5161;5154:12;5116:52;5200:9;5187:23;5177:33;;5261:2;5250:9;5246:18;5233:32;5288:18;5280:6;5277:30;5274:50;;;5320:1;5317;5310:12;5274:50;5359:58;5409:7;5400:6;5389:9;5385:22;5359:58;:::i;:::-;5000:477;;5436:8;;-1:-1:-1;5333:84:124;;-1:-1:-1;;;;5000:477:124:o;5482:539::-;5568:6;5576;5629:2;5617:9;5608:7;5604:23;5600:32;5597:52;;;5645:1;5642;5635:12;5597:52;5685:9;5672:23;5714:18;5755:2;5747:6;5744:14;5741:34;;;5771:1;5768;5761:12;5741:34;5794:49;5835:7;5826:6;5815:9;5811:22;5794:49;:::i;:::-;5784:59;;5896:2;5885:9;5881:18;5868:32;5852:48;;5925:2;5915:8;5912:16;5909:36;;;5941:1;5938;5931:12;5909:36;;5964:51;6007:7;5996:8;5985:9;5981:24;5964:51;:::i;:::-;5954:61;;;5482:539;;;;;:::o;6026:469::-;6117:6;6125;6178:2;6166:9;6157:7;6153:23;6149:32;6146:52;;;6194:1;6191;6184:12;6146:52;6233:9;6220:23;6252:31;6277:5;6252:31;:::i;:::-;6302:5;-1:-1:-1;6358:2:124;6343:18;;6330:32;6385:18;6374:30;;6371:50;;;6417:1;6414;6407:12;6371:50;6440:49;6481:7;6472:6;6461:9;6457:22;6440:49;:::i;6500:481::-;6541:3;6579:5;6573:12;6606:6;6601:3;6594:19;6631:1;6641:162;6655:6;6652:1;6649:13;6641:162;;;6717:4;6773:13;;;6769:22;;6763:29;6745:11;;;6741:20;;6734:59;6670:12;6641:162;;;6645:3;6848:1;6841:4;6832:6;6827:3;6823:16;6819:27;6812:38;6970:4;6900:66;6895:2;6887:6;6883:15;6879:88;6874:3;6870:98;6866:109;6859:116;;;6500:481;;;;:::o;6986:217::-;7133:2;7122:9;7115:21;7096:4;7153:44;7193:2;7182:9;7178:18;7170:6;7153:44;:::i;7208:681::-;7379:2;7431:21;;;7501:13;;7404:18;;;7523:22;;;7350:4;;7379:2;7602:15;;;;7576:2;7561:18;;;7350:4;7645:218;7659:6;7656:1;7653:13;7645:218;;;7724:13;;7739:42;7720:62;7708:75;;7838:15;;;;7803:12;;;;7681:1;7674:9;7645:218;;;-1:-1:-1;7880:3:124;;7208:681;-1:-1:-1;;;;;;7208:681:124:o;7894:367::-;7957:8;7967:6;8021:3;8014:4;8006:6;8002:17;7998:27;7988:55;;8039:1;8036;8029:12;7988:55;-1:-1:-1;8062:20:124;;8105:18;8094:30;;8091:50;;;8137:1;8134;8127:12;8091:50;8174:4;8166:6;8162:17;8150:29;;8234:3;8227:4;8217:6;8214:1;8210:14;8202:6;8198:27;8194:38;8191:47;8188:67;;;8251:1;8248;8241:12;8266:1338;8426:6;8434;8442;8450;8458;8466;8474;8482;8535:3;8523:9;8514:7;8510:23;8506:33;8503:53;;;8552:1;8549;8542:12;8503:53;8591:9;8578:23;8610:31;8635:5;8610:31;:::i;:::-;8660:5;-1:-1:-1;8717:2:124;8702:18;;8689:32;8730:33;8689:32;8730:33;:::i;:::-;8782:7;-1:-1:-1;8840:2:124;8825:18;;8812:32;8863:18;8893:14;;;8890:34;;;8920:1;8917;8910:12;8890:34;8959:70;9021:7;9012:6;9001:9;8997:22;8959:70;:::i;:::-;9048:8;;-1:-1:-1;8933:96:124;-1:-1:-1;9136:2:124;9121:18;;9108:32;;-1:-1:-1;9152:16:124;;;9149:36;;;9181:1;9178;9171:12;9149:36;9220:72;9284:7;9273:8;9262:9;9258:24;9220:72;:::i;:::-;9311:8;;-1:-1:-1;9194:98:124;-1:-1:-1;9399:3:124;9384:19;;9371:33;;-1:-1:-1;9416:16:124;;;9413:36;;;9445:1;9442;9435:12;9609:544;9688:6;9696;9704;9757:2;9745:9;9736:7;9732:23;9728:32;9725:52;;;9773:1;9770;9763:12;9725:52;9812:9;9799:23;9831:31;9856:5;9831:31;:::i;:::-;9881:5;-1:-1:-1;9937:2:124;9922:18;;9909:32;9964:18;9953:30;;9950:50;;;9996:1;9993;9986:12;10158:823;10264:6;10272;10280;10288;10296;10304;10357:3;10345:9;10336:7;10332:23;10328:33;10325:53;;;10374:1;10371;10364:12;10325:53;10413:9;10400:23;10432:31;10457:5;10432:31;:::i;:::-;10482:5;-1:-1:-1;10539:2:124;10524:18;;10511:32;10552:33;10511:32;10552:33;:::i;:::-;10604:7;-1:-1:-1;10658:2:124;10643:18;;10630:32;;-1:-1:-1;10709:2:124;10694:18;;10681:32;;-1:-1:-1;10764:3:124;10749:19;;10736:33;10792:18;10781:30;;10778:50;;;10824:1;10821;10814:12;10778:50;10863:58;10913:7;10904:6;10893:9;10889:22;10863:58;:::i;:::-;10158:823;;;;-1:-1:-1;10158:823:124;;-1:-1:-1;10158:823:124;;10940:8;;10158:823;-1:-1:-1;;;10158:823:124:o;10986:598::-;11189:2;11178:9;11171:21;11152:4;11215:44;11255:2;11244:9;11240:18;11232:6;11215:44;:::i;:::-;11307:9;11299:6;11295:22;11290:2;11279:9;11275:18;11268:50;11342:6;11334;11327:22;11396:6;11388;11383:2;11375:6;11371:15;11358:45;11449:1;11444:2;11435:6;11427;11423:19;11419:28;11412:39;11575:2;11505:66;11500:2;11492:6;11488:15;11484:88;11476:6;11472:101;11468:110;11460:118;;;10986:598;;;;;;:::o;11589:249::-;11658:6;11711:2;11699:9;11690:7;11686:23;11682:32;11679:52;;;11727:1;11724;11717:12;11679:52;11759:9;11753:16;11778:30;11802:5;11778:30;:::i;11843:184::-;11913:6;11966:2;11954:9;11945:7;11941:23;11937:32;11934:52;;;11982:1;11979;11972:12;11934:52;-1:-1:-1;12005:16:124;;11843:184;-1:-1:-1;11843:184:124:o;12378:448::-;12599:6;12588:9;12581:25;12642:2;12637;12626:9;12622:18;12615:30;12562:4;12668:44;12708:2;12697:9;12693:18;12685:6;12668:44;:::i;:::-;12760:9;12752:6;12748:22;12743:2;12732:9;12728:18;12721:50;12788:32;12813:6;12805;12788:32;:::i;:::-;12780:40;12378:448;-1:-1:-1;;;;;;12378:448:124:o;14063:138::-;14142:13;;14164:31;14142:13;14164:31;:::i;:::-;14063:138;;;:::o;14206:1098::-;14310:6;14318;14371:2;14359:9;14350:7;14346:23;14342:32;14339:52;;;14387:1;14384;14377:12;14339:52;14420:9;14414:16;14449:18;14490:2;14482:6;14479:14;14476:34;;;14506:1;14503;14496:12;14476:34;14544:6;14533:9;14529:22;14519:32;;14589:7;14582:4;14578:2;14574:13;14570:27;14560:55;;14611:1;14608;14601:12;14560:55;14640:2;14634:9;14662:4;14685:2;14681;14678:10;14675:36;;;14691:18;;:::i;:::-;14737:2;14734:1;14730:10;14720:20;;14760:28;14784:2;14780;14776:11;14760:28;:::i;:::-;14822:15;;;14892:11;;;14888:20;;;14853:12;;;;14920:19;;;14917:39;;;14952:1;14949;14942:12;14917:39;14976:11;;;;14996:210;15012:6;15007:3;15004:15;14996:210;;;15085:3;15079:10;15066:23;;15102:31;15127:5;15102:31;:::i;:::-;15146:18;;;15029:12;;;;15184;;;;14996:210;;;15225:5;-1:-1:-1;15249:49:124;;-1:-1:-1;15279:18:124;;;15249:49;:::i;:::-;15239:59;;;;;;14206:1098;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"encodeMessageDataForSafe(address,bytes)":"23031640","getMessageHash(bytes)":"0a1028c4","getMessageHashForSafe(address,bytes)":"6ac24784","getModules()":"b2494df3","isValidSignature(bytes,bytes)":"20c13b0b","isValidSignature(bytes32,bytes)":"1626ba7e","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","simulate(address,bytes)":"bd61951d","supportsInterface(bytes4)":"01ffc9a7","tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"encodeMessageDataForSafe\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"getMessageHashForSafe\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getModules\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{\"encodeMessageDataForSafe(address,bytes)\":{\"details\":\"Returns the pre-image of the message hash (see getMessageHashForSafe).\",\"params\":{\"message\":\"Message that should be encoded.\",\"safe\":\"Safe to which the message is targeted.\"},\"returns\":{\"_0\":\"Encoded message.\"}},\"getMessageHash(bytes)\":{\"details\":\"Returns the hash of a message to be signed by owners.\",\"params\":{\"message\":\"Raw message bytes.\"},\"returns\":{\"_0\":\"Message hash.\"}},\"getMessageHashForSafe(address,bytes)\":{\"details\":\"Returns hash of a message that can be signed by owners.\",\"params\":{\"message\":\"Message that should be hashed.\",\"safe\":\"Safe to which the message is targeted.\"},\"returns\":{\"_0\":\"Message hash.\"}},\"getModules()\":{\"details\":\"Returns array of first 10 modules.\",\"returns\":{\"_0\":\"Array of modules.\"}},\"isValidSignature(bytes,bytes)\":{\"details\":\"Implementation of ISignatureValidator (see `interfaces/ISignatureValidator.sol`)\",\"params\":{\"_data\":\"Arbitrary length data signed on the behalf of address(msg.sender).\",\"_signature\":\"Signature byte array associated with _data.\"},\"returns\":{\"_0\":\"The EIP-1271 magic value.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_dataHash\":\"Hash of the data signed on the behalf of address(msg.sender)\",\"_signature\":\"Signature byte array associated with _dataHash\"},\"returns\":{\"_0\":\"Updated EIP1271 magic value if signature is valid, otherwise 0x0\"}},\"simulate(address,bytes)\":{\"details\":\"Performs a delegatecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.Inspired by https://github.com/gnosis/util-contracts/blob/bb5fe5fb5df6d8400998094fb1b32a178a47c3a1/contracts/StorageAccessible.sol\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"Id of the interface.\"},\"returns\":{\"_0\":\"if the interface is supported.\"}}},\"title\":\"Compatibility Fallback Handler - Provides compatibility between pre 1.3.0 and 1.3.0+ Safe contracts.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"notice\":\"Legacy EIP-1271 signature validation method.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Implementation of updated EIP-1271 signature validation method.\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Handles ERC1155 Token batch callback. return Standardized onERC1155BatchReceived return value.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Handles ERC1155 Token callback. return Standardized onERC1155Received return value.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handles ERC721 Token callback. return Standardized onERC721Received return value.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Implements ERC165 interface support for ERC1155TokenReceiver, ERC721TokenReceiver and IERC165.\"},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"notice\":\"Handles ERC777 Token callback. return nothing (not standardized)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":\"CompatibilityFallbackHandler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function","name":"encodeMessageDataForSafe","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function","name":"getMessageHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function","name":"getMessageHashForSafe","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getModules","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"_dataHash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulate","outputs":[{"internalType":"bytes","name":"response","type":"bytes"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"tokensReceived"}],"devdoc":{"kind":"dev","methods":{"encodeMessageDataForSafe(address,bytes)":{"details":"Returns the pre-image of the message hash (see getMessageHashForSafe).","params":{"message":"Message that should be encoded.","safe":"Safe to which the message is targeted."},"returns":{"_0":"Encoded message."}},"getMessageHash(bytes)":{"details":"Returns the hash of a message to be signed by owners.","params":{"message":"Raw message bytes."},"returns":{"_0":"Message hash."}},"getMessageHashForSafe(address,bytes)":{"details":"Returns hash of a message that can be signed by owners.","params":{"message":"Message that should be hashed.","safe":"Safe to which the message is targeted."},"returns":{"_0":"Message hash."}},"getModules()":{"details":"Returns array of first 10 modules.","returns":{"_0":"Array of modules."}},"isValidSignature(bytes,bytes)":{"details":"Implementation of ISignatureValidator (see `interfaces/ISignatureValidator.sol`)","params":{"_data":"Arbitrary length data signed on the behalf of address(msg.sender).","_signature":"Signature byte array associated with _data."},"returns":{"_0":"The EIP-1271 magic value."}},"isValidSignature(bytes32,bytes)":{"params":{"_dataHash":"Hash of the data signed on the behalf of address(msg.sender)","_signature":"Signature byte array associated with _dataHash"},"returns":{"_0":"Updated EIP1271 magic value if signature is valid, otherwise 0x0"}},"simulate(address,bytes)":{"details":"Performs a delegatecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.Inspired by https://github.com/gnosis/util-contracts/blob/bb5fe5fb5df6d8400998094fb1b32a178a47c3a1/contracts/StorageAccessible.sol","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}},"supportsInterface(bytes4)":{"params":{"interfaceId":"Id of the interface."},"returns":{"_0":"if the interface is supported."}}},"version":1},"userdoc":{"kind":"user","methods":{"isValidSignature(bytes,bytes)":{"notice":"Legacy EIP-1271 signature validation method."},"isValidSignature(bytes32,bytes)":{"notice":"Implementation of updated EIP-1271 signature validation method."},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"notice":"Handles ERC1155 Token batch callback. return Standardized onERC1155BatchReceived return value."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"notice":"Handles ERC1155 Token callback. return Standardized onERC1155Received return value."},"onERC721Received(address,address,uint256,bytes)":{"notice":"Handles ERC721 Token callback. return Standardized onERC721Received return value."},"supportsInterface(bytes4)":{"notice":"Implements ERC165 interface support for ERC1155TokenReceiver, ERC721TokenReceiver and IERC165."},"tokensReceived(address,address,address,uint256,bytes,bytes)":{"notice":"Handles ERC777 Token callback. return nothing (not standardized)"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":"CompatibilityFallbackHandler"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":60} \ No newline at end of file diff --git a/out/ComposableCoW.base.t.sol/BaseComposableCoWTest.json b/out/ComposableCoW.base.t.sol/BaseComposableCoWTest.json new file mode 100644 index 0000000..d828e60 --- /dev/null +++ b/out/ComposableCoW.base.t.sol/BaseComposableCoWTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790553480156200002e57600080fd5b506040516200003d9062000389565b604051809103906000f0801580156200005a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055604051620000899062000397565b604051809103906000f080158015620000a6573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000d590620003a5565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012190620003b3565b604051809103906000f0801580156200013e573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200016d90620003c1565b604051809103906000f0801580156200018a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001b990620003cf565b604051809103906000f080158015620001d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020590620003dd565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f0801580156200025a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200028990620003dd565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002de573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200030d90620003dd565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000362573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003eb565b613dd1806200fb3b83390190565b610979806201390c83390190565b611168806201428583390190565b6124eb80620153ed83390190565b6102ec80620178d883390190565b6104708062017bc483390190565b610e13806201803483390190565b61f74080620003fb6000396000f3fe60806040523480156200001157600080fd5b5060043610620002705760003560e01c8063916a17c6116200015f578063c80916d411620000cc578063dfe274a91162000097578063e27d5153116200007a578063e27d5153146200051b578063fa7626d41462000532578063fbfa77cf146200054057600080fd5b8063dfe274a914620004fd578063e20c9f71146200051157600080fd5b8063c80916d414620004a7578063cf06c7b714620004bb578063d21220a714620004d2578063dd1d259914620004e657600080fd5b8063b62654fb116200012a578063b8616195116200010d578063b86161951462000463578063ba414fa61462000489578063c45a0155146200049357600080fd5b8063b62654fb1462000445578063b716db66146200045957600080fd5b8063916a17c614620004095780639fbcc9ad1462000413578063ad9b04751462000427578063b5508aa9146200043b57600080fd5b8063329696ac11620001fe57806358161a4211620001c95780637d499aa411620001ac5780637d499aa414620003c85780638406c07914620003dc57806385226c8114620003f057600080fd5b806358161a42146200038757806366d9a9a014620003af57600080fd5b8063329696ac14620003555780633e5e3c23146200035f5780633f7286f4146200036957806351160630146200037357600080fd5b80631ed7831c116200023f5780631ed7831c14620002ee57806325be124e1462000307578063294402cc146200031b5780632e08d602146200032f57600080fd5b80630a9254e414620002755780630c8548f514620002815780630dfe168114620002b2578063151bcd2c14620002c6575b600080fd5b6200027f62000554565b005b60335462000295906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60215462000295906001600160a01b031681565b620002dd620002d736600462004a11565b620008d4565b604051620002a99392919062004a7f565b620002f862000991565b604051620002a9919062004aef565b60235462000295906001600160a01b031681565b601f5462000295906001600160a01b031681565b620003466200034036600462004c01565b620009f5565b604051908152602001620002a9565b6200027f62000ad1565b620002f862000bdf565b620002f862000c41565b60255462000295906001600160a01b031681565b6200039e6200039836600462004c42565b62000ca3565b6040519015158152602001620002a9565b620003b962000cf4565b604051620002a9919062004c96565b60325462000295906001600160a01b031681565b602a5462000295906001600160a01b031681565b620003fa62000dfc565b604051620002a9919062004d83565b620003b962000ed6565b601e5462000295906001600160a01b031681565b60315462000295906001600160a01b031681565b620003fa62000fd5565b601b5462000295906001600160a01b031681565b6200027f620010af565b6200047a6200047436600462004e07565b620011eb565b604051620002a9919062004e50565b6200039e620013c3565b601c5462000295906001600160a01b031681565b601d5462000295906001600160a01b031681565b62000346620004cc36600462004a11565b6200150f565b60225462000295906001600160a01b031681565b62000346620004f736600462004e96565b62001678565b60205462000295906001600160a01b031681565b620002f8620016a8565b620003466200052c36600462004a11565b6200170a565b6000546200039e9060ff1681565b60245462000295906001600160a01b031681565b6200055e62001737565b6025546040516001600160a01b03909116906200057b906200497a565b6001600160a01b039091168152602001604051809103906000f080158015620005a8573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200073094938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562000669573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068f919062004eb9565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200071962001afc565b6031546001600160a01b0316949392919062001bd6565b6040516200073e9062004988565b604051809103906000f0801580156200075b573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620007a29062004996565b604051809103906000f080158015620007bf573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200080690620049a4565b604051809103906000f08015801562000823573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556034546040519116906200086c90620049b2565b6001600160a01b039091168152602001604051809103906000f08015801562000899573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6039602052600090815260409020805460018201546002830180546001600160a01b03909316939192620009089062004ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054620009369062004ed3565b8015620009875780601f106200095b5761010080835404028352916020019162000987565b820191906000526020600020905b8154815290600101906020018083116200096957829003601f168201915b5050505050905083565b6060600d805480602002602001604051908101604052809291908181526020018280548015620009eb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620009cc575b5050505050905090565b6000600182511162000a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60018251111562000aac5762000aa48262001e09565b915062000a8e565b8160008151811062000ac25762000ac262004f28565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000bdd926001600160a01b03169163f698da259160048083019260209291908290030181865afa15801562000b37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b5d919062004eb9565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bd7919062004eb9565b62001f95565b565b6060600f805480602002602001604051908101604052809291908181526020018280548015620009eb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620009cc575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620009eb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620009cc575050505050905090565b81516000908290825b8181101562000ce85762000cdd8387838151811062000ccf5762000ccf62004f28565b602002602001015162001678565b925060010162000cac565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000df35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000dda57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d865790505b5050505050815250508152602001906001019062000d18565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000df357838290600052602060002001805462000e429062004ed3565b80601f016020809104026020016040519081016040528092919081815260200182805462000e709062004ed3565b801562000ec15780601f1062000e955761010080835404028352916020019162000ec1565b820191906000526020600020905b81548152906001019060200180831162000ea357829003601f168201915b50505050508152602001906001019062000e20565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000df35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000fbc57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000f685790505b5050505050815250508152602001906001019062000efa565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000df35783829060005260206000200180546200101b9062004ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054620010499062004ed3565b80156200109a5780601f106200106e576101008083540402835291602001916200109a565b820191906000526020600020905b8154815290600101906020018083116200107c57829003601f168201915b50505050508152602001906001019062000ff9565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000bdd946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa1580156200112b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001151919062004eb9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620011b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d9919062004f6d565b6034546001600160a01b0316620020ab565b606060018351116200127f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000a85565b60006200128d84516200150f565b67ffffffffffffffff811115620012a857620012a862004b04565b604051908082528060200260200182016040528015620012d2578160200160208202803683370190505b50905060005b600185511115620013b95783600116600103620013365784600185038151811062001307576200130762004f28565b602002602001015182828151811062001324576200132462004f28565b6020026020010181815250506200139d565b845184600101036200135b576000801b82828151811062001324576200132462004f28565b84846001018151811062001373576200137362004f28565b602002602001015182828151811062001390576200139062004f28565b6020026020010181815250505b600101600284049350620013b18562001e09565b9450620012d8565b5090505b92915050565b60008054610100900460ff1615620013e45750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200150a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200148c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162004f8d565b60408051601f1981840301815290829052620014a89162004fd7565b6000604051808303816000865af19150503d8060008114620014e7576040519150601f19603f3d011682016040523d82523d6000602084013e620014ec565b606091505b509150508080602001905181019062001506919062004ff5565b9150505b919050565b6000600182116200152257506000919050565b60008270010000000000000000000000000000000081106200155357608093841c9362001550908362005048565b91505b6801000000000000000084106200157957604093841c9362001576908362005048565b91505b64010000000084106200159b57602093841c9362001598908362005048565b91505b620100008410620015bb57601093841c93620015b8908362005048565b91505b6101008410620015da57600893841c93620015d7908362005048565b91505b60108410620015f857600493841c93620015f5908362005048565b91505b600484106200161657600293841c9362001613908362005048565b91505b600284106200162f576200162c60018362005048565b91505b600081620016408119600162005048565b1690508181148015620016535750600083115b15620016625750909392505050565b6200166f83600162005048565b95945050505050565b60008183108015620016925783600052826020526200169b565b82600052836020525b5050604060002092915050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620009eb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620009cc575050505050905090565b6000808219600101831683145b83156200172f57600193841c93919091019062001717565b900392915050565b62001741620021bd565b620017816040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062002620565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620018049062002620565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620018879062002620565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b54620018e6929182169116683635c9adc5dea00000620027a6565b602254602d546200190e916001600160a01b039081169116683635c9adc5dea00000620027a6565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062001954576200195462004f28565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062001988576200198862004f28565b6001600160a01b039283166020918202929092010152602f54825191169082906002908110620019bc57620019bc62004f28565b6001600160a01b039283166020918202929092010152601c54601b54601e54620019f69392831692918216918591600291166000620027ba565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462001a4e9392831692918216918591600291166001620027ba565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462001aa593928316929182169185916002911681620027ba565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462001af9929182169116683635c9adc5dea00000620027a6565b50565b604080516002808252606082810190935260009190816020015b604080518082019091526000808252602082015281526020019060019003908162001b1657505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062001b775762001b7762004f28565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062001bc05762001bc062004f28565b6020026020010181905250620013bd81620028be565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c3d919062004eb9565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b815260040162001c849a999897969594939291906200509a565b602060405180830381865afa15801562001ca2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cc8919062004eb9565b905062001cd583620028be565b9250606060005b845181101562001d52578162001d188487848151811062001d015762001d0162004f28565b6020026020010151620029f790919063ffffffff16565b60405160200162001d2b92919062005111565b6040516020818303038152906040529150808062001d499062005144565b91505062001cdc565b50886001600160a01b0316636a7612028989898960008060008060008b60405160200162001d81919062004fd7565b6040516020818303038152906040526040518b63ffffffff1660e01b815260040162001db79a999897969594939291906200517f565b6020604051808303816000875af115801562001dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001dfd919062004ff5565b50505050505050505050565b6060806000835190508060011660010362001ec6576002810460010167ffffffffffffffff81111562001e405762001e4062004b04565b60405190808252806020026020018201604052801562001e6a578160200160208202803683370190505b50915062001e9b84600183038151811062001e895762001e8962004f28565b60200260200101516000801b62001678565b8260018451038151811062001eb45762001eb462004f28565b60200260200101818152505062001f13565b6002810467ffffffffffffffff81111562001ee55762001ee562004b04565b60405190808252806020026020018201604052801562001f0f578160200160208202803683370190505b5091505b6000805b6001830381101562001f8b5762001f5c86828151811062001f3c5762001f3c62004f28565b602002602001015187836001018151811062000ccf5762000ccf62004f28565b84838151811062001f715762001f7162004f28565b602090810291909101015260019091019060020162001f17565b5091949350505050565b808214620020a7577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620020239060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99826040516200205c919062005206565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162002095919062005252565b60405180910390a1620020a762002b21565b5050565b806001600160a01b0316826001600160a01b031614620020a7577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200214b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162002184919062005290565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620020959190620052e5565b620021fd6040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062002620565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620022809062002620565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c74000000000000000000000000000000000000000000000091810191909152620023039062002c68565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516000906200234c90620049c0565b604051809103906000f08015801562002369573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b158015620023cd57600080fd5b505af1158015620023e2573d6000803e3d6000fd5b50506024546040518493506001600160a01b0390911691506200240590620049ce565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562002439573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa158015620024c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024ec919062004f6d565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200258a57600080fd5b505af11580156200259f573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200260457600080fd5b505af115801562002619573d6000803e3d6000fd5b5050505050565b604080518082019091526000808252602082015260008260405160200162002649919062004fd7565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620026ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026f4919062004f6d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200274b908490889060040162005323565b600060405180830381600087803b1580156200276657600080fd5b505af11580156200277b573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b620027b5838383600062002c7c565b505050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b88886000896000806000604051602401620027f6979695949392919062005347565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200286d92918790600401620053b1565b6020604051808303816000875af11580156200288d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028b3919062004f6d565b979650505050505050565b606060005b8251811015620029f0576000620028dc82600162005048565b90505b8351811015620029da57838181518110620028fe57620028fe62004f28565b6020026020010151600001516001600160a01b031684838151811062002928576200292862004f28565b6020026020010151600001516001600160a01b03161115620029c55760008483815181106200295b576200295b62004f28565b602002602001015190508482815181106200297a576200297a62004f28565b602002602001015185848151811062002997576200299762004f28565b602002602001018190525080858381518110620029b857620029b862004f28565b6020026020010181905250505b80620029d18162005144565b915050620028df565b5080620029e78162005144565b915050620028c3565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562002a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a9e9190620053e5565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c3a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002bd5929160200162004f8d565b60408051601f198184030181529082905262002bf19162004fd7565b6000604051808303816000865af19150503d806000811462002c30576040519150601f19603f3d011682016040523d82523d6000602084013e62002c35565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b600062002c758262002f14565b5092915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162002d009162004fd7565b6000604051808303816000865af19150503d806000811462002d3f576040519150601f19603f3d011682016040523d82523d6000602084013e62002d44565b606091505b5091505060008180602001905181019062002d60919062004eb9565b905062002db38462002dac8762002da57f70a082310000000000000000000000000000000000000000000000000000000062002d9e60058d62003062565b90620030a2565b90620030db565b9062003104565b821562002f0c5760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b0389169162002e2c919062004fd7565b6000604051808303816000865af19150503d806000811462002e6b576040519150601f19603f3d011682016040523d82523d6000602084013e62002e70565b606091505b5091505060008180602001905181019062002e8c919062004eb9565b90508286101562002eb75762002ea3868462005424565b62002eaf908262005424565b905062002ed2565b62002ec3838762005424565b62002ecf908262005048565b90505b62002f098162002dac7f18160ddd0000000000000000000000000000000000000000000000000000000062002d9e60058d62003062565b50505b505050505050565b6000808260405160200162002f2a919062004fd7565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562002fac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fd2919062004f6d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062003029908590879060040162005323565b600060405180830381600087803b1580156200304457600080fd5b505af115801562003059573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200309b565b6002820180546001810182556000918252602082206001600160a01b038416910155826200309b565b620020a78282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200317d57602002820191906000526020600020905b81548152602001906001019080831162003168575b505050505090506000836200319283620035de565b604051602001620031a592919062004f8d565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a168352815292812091945090929091620032119186918891016200543a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200324c576200324a876200368b565b505b6001600160a01b0385166000908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905190918391620032a59187918991016200543a565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620032ec919062004fd7565b600060405180830381855afa9150503d806000811462003329576040519150601f19603f3d011682016040523d82523d6000602084013e6200332e565b606091505b5091506200334b9050816200334588602062005476565b62003698565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620033cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033f1919062004eb9565b9050808214620034d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000a85565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b1580156200354d57600080fd5b505af115801562003562573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620035ca60028b016000620049dc565b896004016000905550505050505050505050565b6060600082516020620035f2919062005476565b67ffffffffffffffff8111156200360d576200360d62004b04565b6040519080825280601f01601f19166020018201604052801562003638576020820181803683370190505b50905060005b835181101562002c755760008482815181106200365f576200365f62004f28565b602002602001015190508082602002602001840152508080620036829062005144565b9150506200363e565b6000620013bd826200373a565b60008060006020855111620036af578451620036b2565b60205b905060005b818110156200373057620036cd81600862005476565b86620036da838862005048565b81518110620036ed57620036ed62004f28565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620037278162005144565b915050620036b7565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620037ac57602002820191906000526020600020905b81548152602001906001019080831162003797575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062003810925085918791016200543a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620038c7576001600160a01b0384166000908152602087815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909291620038979185918791016200543a565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620038d58362004835565b604051602001620038e892919062004f8d565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200395857600080fd5b505af11580156200396d573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200398e919062004fd7565b600060405180830381855afa9150503d8060008114620039cb576040519150601f19603f3d011682016040523d82523d6000602084013e620039d0565b606091505b509150620039ed905081620039e787602062005476565b620048e2565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562003a68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a929190810190620054f2565b509050805160010362003ec45760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062003aea5762003aea62004f28565b60200260200101516040518363ffffffff1660e01b815260040162003b249291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562003b42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b68919062004eb9565b90508062003bd3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062003ba85762003ba862004f28565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462003cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000a85565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162003ce89291906200543a565b604051602081830303815290604052805190602001208560008151811062003d145762003d1462004f28565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062003d865762003d8662004f28565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262003de9918a918c91016200543a565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162003e6b918a918c91016200543a565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200462d565b600181511115620045a25760005b81518110156200459b5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062003f265762003f2662004f28565b60200260200101516040518363ffffffff1660e01b815260040162003f609291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562003f7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fa4919062004eb9565b9050806200400e577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062003fe35762003fe362004f28565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062004056576200405662004f28565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b158015620040e657600080fd5b505af1158015620040fb573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200411d919062004fd7565b600060405180830381855afa9150503d80600081146200415a576040519150601f19603f3d011682016040523d82523d6000602084013e6200415f565b606091505b5090925090506200417781620039e78b602062005476565b9550818015620041a657507f133700000000000000000000000000000000000000000000000000000000000086145b15620044b0577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620041e49291906200543a565b604051602081830303815290604052805190602001208888815181106200420f576200420f62004f28565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062004280576200428062004f28565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f1683528452808220905192939092620042e3918d918f91016200543a565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c6040516020016200439a9291906200543a565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200441d576200441d62004f28565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200448e57600080fd5b505af1158015620044a3573d6000803e3d6000fd5b505050505050506200459b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620044f857620044f862004f28565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200456957600080fd5b505af11580156200457e573d6000803e3d6000fd5b505050505050508080620045929062005144565b91505062003ed2565b506200462d565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000a85565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620046899188918a91016200543a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662004740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000a85565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620047a460028a016000620049dc565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620048029188918a91016200543a565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062004849919062005476565b67ffffffffffffffff81111562004864576200486462004b04565b6040519080825280601f01601f1916602001820160405280156200488f576020820181803683370190505b50905060005b835181101562002c75576000848281518110620048b657620048b662004f28565b602002602001015190508082602002602001840152508080620048d99062005144565b91505062004895565b60008060006020855111620048f9578451620048fc565b60205b905060005b8181101562003730576200491781600862005476565b8662004924838862005048565b8151811062004937576200493762004f28565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620049718162005144565b91505062004901565b61237a806200555e83390190565b61013c80620078d883390190565b6108098062007a1483390190565b610200806200821d83390190565b611246806200841d83390190565b610d06806200966383390190565b6153a2806200a36983390190565b508054600082559060005260206000209081019062001af991905b8082111562004a0d5760008155600101620049f7565b5090565b60006020828403121562004a2457600080fd5b5035919050565b60005b8381101562004a4857818101518382015260200162004a2e565b50506000910152565b6000815180845262004a6b81602086016020860162004a2b565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200166f606083018462004a51565b600081518084526020808501945080840160005b8381101562004ae45781516001600160a01b03168752958201959082019060010162004abd565b509495945050505050565b6020815260006200309b602083018462004aa9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562004b5f5762004b5f62004b04565b604052919050565b600067ffffffffffffffff82111562004b845762004b8462004b04565b5060051b60200190565b600082601f83011262004ba057600080fd5b8135602062004bb962004bb38362004b67565b62004b33565b82815260059290921b8401810191818101908684111562004bd957600080fd5b8286015b8481101562004bf6578035835291830191830162004bdd565b509695505050505050565b60006020828403121562004c1457600080fd5b813567ffffffffffffffff81111562004c2c57600080fd5b62004c3a8482850162004b8e565b949350505050565b60008060006060848603121562004c5857600080fd5b83359250602084013567ffffffffffffffff81111562004c7757600080fd5b62004c858682870162004b8e565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562004d74578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562004d5e5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062004d1a565b50978a0197955050509187019160010162004cbe565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562004dfa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262004de785835162004a51565b9450928501929085019060010162004daa565b5092979650505050505050565b6000806040838503121562004e1b57600080fd5b823567ffffffffffffffff81111562004e3357600080fd5b62004e418582860162004b8e565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b8181101562004e8a5783518352928401929184019160010162004e6c565b50909695505050505050565b6000806040838503121562004eaa57600080fd5b50508035926020909101359150565b60006020828403121562004ecc57600080fd5b5051919050565b600181811c9082168062004ee857607f821691505b60208210810362004f22577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b038116811462001af957600080fd5b60006020828403121562004f8057600080fd5b81516200309b8162004f57565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162004fc981600485016020870162004a2b565b919091016004019392505050565b6000825162004feb81846020870162004a2b565b9190910192915050565b6000602082840312156200500857600080fd5b815180151581146200309b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620013bd57620013bd62005019565b6002811062005096577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c6020850152816040850152620050c68285018d62004a51565b9250620050d7606085018c6200505e565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200512581846020880162004a2b565b8351908301906200513b81836020880162004a2b565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362005178576200517862005019565b5060010190565b60006101406001600160a01b03808e1684528c6020850152816040850152620051ab8285018d62004a51565b9150620051bc606085018c6200505e565b8960808501528860a08501528760c085015280871660e085015280861661010085015250828103610120840152620051f5818562004a51565b9d9c50505050505050505050505050565b6040815260006200524460408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200524460408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b604081526000620052ce60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620052ce60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6001600160a01b038316815260406020820152600062004c3a604083018462004a51565b60006101008083526200535d8184018b62004aa9565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b0384168152606060208201526000620053d5606083018562004a51565b9050826040830152949350505050565b600080600060608486031215620053fb57600080fd5b835160ff811681146200540d57600080fd5b602085015160409095015190969495509392505050565b81810381811115620013bd57620013bd62005019565b825160009082906020808701845b83811015620054665781518552938201939082019060010162005448565b5050948252509092019392505050565b8082028115828204841417620013bd57620013bd62005019565b600082601f830112620054a257600080fd5b81516020620054b562004bb38362004b67565b82815260059290921b84018101918181019086841115620054d557600080fd5b8286015b8481101562004bf65780518352918301918301620054d9565b600080604083850312156200550657600080fd5b825167ffffffffffffffff808211156200551f57600080fd5b6200552d8683870162005490565b935060208501519150808211156200554457600080fd5b50620055538582860162005490565b915050925092905056fe60a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a2646970667358221220b1b00effbe0bca8107c2d74b7c7518e8014d846a7ff398f9f571802671a5e54964736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"987:7905:107:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:30;;;;;;;;;;;987:7905:107;;;;;;;;;;1168:10:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:116;:22;;-1:-1:-1;;;;;;1156:22:116;-1:-1:-1;;;;;1156:22:116;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:116;:32;;-1:-1:-1;;;;;;1188:32:116;-1:-1:-1;;;;;1188:32:116;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:116;:44;;-1:-1:-1;;;;;;1230:44:116;-1:-1:-1;;;;;1230:44:116;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:116;:42;;-1:-1:-1;;;;;;1323:42:116;-1:-1:-1;;;;;1323:42:116;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:116;:27;;-1:-1:-1;;;;;;1375:27:116;-1:-1:-1;;;;;1375:27:116;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:116;:37;;-1:-1:-1;;;;;;1412:37:116;-1:-1:-1;;;;;1412:37:116;;;;;;;;;;875:30:117;;;;;:::i;:::-;317:2:122;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:122;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:122;501:19;;494:33;559:3;544:19;875:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:117;:56;;-1:-1:-1;;;;;;851:56:117;-1:-1:-1;;;;;851:56:117;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:122;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:122;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:122;1061:19;;1054:33;1119:3;1104:19;941:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:117;:56;;-1:-1:-1;;;;;;917:56:117;-1:-1:-1;;;;;917:56:117;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:122;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:122;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:122;1621:19;;1614:33;1679:3;1664:19;1007:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:117;:56;;-1:-1:-1;;;;;;983:56:117;-1:-1:-1;;;;;983:56:117;;;;;;;;;;987:7905:107;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:122:-;987:7905:107;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002705760003560e01c8063916a17c6116200015f578063c80916d411620000cc578063dfe274a91162000097578063e27d5153116200007a578063e27d5153146200051b578063fa7626d41462000532578063fbfa77cf146200054057600080fd5b8063dfe274a914620004fd578063e20c9f71146200051157600080fd5b8063c80916d414620004a7578063cf06c7b714620004bb578063d21220a714620004d2578063dd1d259914620004e657600080fd5b8063b62654fb116200012a578063b8616195116200010d578063b86161951462000463578063ba414fa61462000489578063c45a0155146200049357600080fd5b8063b62654fb1462000445578063b716db66146200045957600080fd5b8063916a17c614620004095780639fbcc9ad1462000413578063ad9b04751462000427578063b5508aa9146200043b57600080fd5b8063329696ac11620001fe57806358161a4211620001c95780637d499aa411620001ac5780637d499aa414620003c85780638406c07914620003dc57806385226c8114620003f057600080fd5b806358161a42146200038757806366d9a9a014620003af57600080fd5b8063329696ac14620003555780633e5e3c23146200035f5780633f7286f4146200036957806351160630146200037357600080fd5b80631ed7831c116200023f5780631ed7831c14620002ee57806325be124e1462000307578063294402cc146200031b5780632e08d602146200032f57600080fd5b80630a9254e414620002755780630c8548f514620002815780630dfe168114620002b2578063151bcd2c14620002c6575b600080fd5b6200027f62000554565b005b60335462000295906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60215462000295906001600160a01b031681565b620002dd620002d736600462004a11565b620008d4565b604051620002a99392919062004a7f565b620002f862000991565b604051620002a9919062004aef565b60235462000295906001600160a01b031681565b601f5462000295906001600160a01b031681565b620003466200034036600462004c01565b620009f5565b604051908152602001620002a9565b6200027f62000ad1565b620002f862000bdf565b620002f862000c41565b60255462000295906001600160a01b031681565b6200039e6200039836600462004c42565b62000ca3565b6040519015158152602001620002a9565b620003b962000cf4565b604051620002a9919062004c96565b60325462000295906001600160a01b031681565b602a5462000295906001600160a01b031681565b620003fa62000dfc565b604051620002a9919062004d83565b620003b962000ed6565b601e5462000295906001600160a01b031681565b60315462000295906001600160a01b031681565b620003fa62000fd5565b601b5462000295906001600160a01b031681565b6200027f620010af565b6200047a6200047436600462004e07565b620011eb565b604051620002a9919062004e50565b6200039e620013c3565b601c5462000295906001600160a01b031681565b601d5462000295906001600160a01b031681565b62000346620004cc36600462004a11565b6200150f565b60225462000295906001600160a01b031681565b62000346620004f736600462004e96565b62001678565b60205462000295906001600160a01b031681565b620002f8620016a8565b620003466200052c36600462004a11565b6200170a565b6000546200039e9060ff1681565b60245462000295906001600160a01b031681565b6200055e62001737565b6025546040516001600160a01b03909116906200057b906200497a565b6001600160a01b039091168152602001604051809103906000f080158015620005a8573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200073094938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562000669573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068f919062004eb9565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200071962001afc565b6031546001600160a01b0316949392919062001bd6565b6040516200073e9062004988565b604051809103906000f0801580156200075b573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620007a29062004996565b604051809103906000f080158015620007bf573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200080690620049a4565b604051809103906000f08015801562000823573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556034546040519116906200086c90620049b2565b6001600160a01b039091168152602001604051809103906000f08015801562000899573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6039602052600090815260409020805460018201546002830180546001600160a01b03909316939192620009089062004ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054620009369062004ed3565b8015620009875780601f106200095b5761010080835404028352916020019162000987565b820191906000526020600020905b8154815290600101906020018083116200096957829003601f168201915b5050505050905083565b6060600d805480602002602001604051908101604052809291908181526020018280548015620009eb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620009cc575b5050505050905090565b6000600182511162000a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60018251111562000aac5762000aa48262001e09565b915062000a8e565b8160008151811062000ac25762000ac262004f28565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000bdd926001600160a01b03169163f698da259160048083019260209291908290030181865afa15801562000b37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b5d919062004eb9565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bd7919062004eb9565b62001f95565b565b6060600f805480602002602001604051908101604052809291908181526020018280548015620009eb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620009cc575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620009eb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620009cc575050505050905090565b81516000908290825b8181101562000ce85762000cdd8387838151811062000ccf5762000ccf62004f28565b602002602001015162001678565b925060010162000cac565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000df35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000dda57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d865790505b5050505050815250508152602001906001019062000d18565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000df357838290600052602060002001805462000e429062004ed3565b80601f016020809104026020016040519081016040528092919081815260200182805462000e709062004ed3565b801562000ec15780601f1062000e955761010080835404028352916020019162000ec1565b820191906000526020600020905b81548152906001019060200180831162000ea357829003601f168201915b50505050508152602001906001019062000e20565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000df35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000fbc57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000f685790505b5050505050815250508152602001906001019062000efa565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000df35783829060005260206000200180546200101b9062004ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054620010499062004ed3565b80156200109a5780601f106200106e576101008083540402835291602001916200109a565b820191906000526020600020905b8154815290600101906020018083116200107c57829003601f168201915b50505050508152602001906001019062000ff9565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000bdd946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa1580156200112b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001151919062004eb9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620011b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d9919062004f6d565b6034546001600160a01b0316620020ab565b606060018351116200127f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000a85565b60006200128d84516200150f565b67ffffffffffffffff811115620012a857620012a862004b04565b604051908082528060200260200182016040528015620012d2578160200160208202803683370190505b50905060005b600185511115620013b95783600116600103620013365784600185038151811062001307576200130762004f28565b602002602001015182828151811062001324576200132462004f28565b6020026020010181815250506200139d565b845184600101036200135b576000801b82828151811062001324576200132462004f28565b84846001018151811062001373576200137362004f28565b602002602001015182828151811062001390576200139062004f28565b6020026020010181815250505b600101600284049350620013b18562001e09565b9450620012d8565b5090505b92915050565b60008054610100900460ff1615620013e45750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200150a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200148c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162004f8d565b60408051601f1981840301815290829052620014a89162004fd7565b6000604051808303816000865af19150503d8060008114620014e7576040519150601f19603f3d011682016040523d82523d6000602084013e620014ec565b606091505b509150508080602001905181019062001506919062004ff5565b9150505b919050565b6000600182116200152257506000919050565b60008270010000000000000000000000000000000081106200155357608093841c9362001550908362005048565b91505b6801000000000000000084106200157957604093841c9362001576908362005048565b91505b64010000000084106200159b57602093841c9362001598908362005048565b91505b620100008410620015bb57601093841c93620015b8908362005048565b91505b6101008410620015da57600893841c93620015d7908362005048565b91505b60108410620015f857600493841c93620015f5908362005048565b91505b600484106200161657600293841c9362001613908362005048565b91505b600284106200162f576200162c60018362005048565b91505b600081620016408119600162005048565b1690508181148015620016535750600083115b15620016625750909392505050565b6200166f83600162005048565b95945050505050565b60008183108015620016925783600052826020526200169b565b82600052836020525b5050604060002092915050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620009eb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620009cc575050505050905090565b6000808219600101831683145b83156200172f57600193841c93919091019062001717565b900392915050565b62001741620021bd565b620017816040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062002620565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620018049062002620565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620018879062002620565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b54620018e6929182169116683635c9adc5dea00000620027a6565b602254602d546200190e916001600160a01b039081169116683635c9adc5dea00000620027a6565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062001954576200195462004f28565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062001988576200198862004f28565b6001600160a01b039283166020918202929092010152602f54825191169082906002908110620019bc57620019bc62004f28565b6001600160a01b039283166020918202929092010152601c54601b54601e54620019f69392831692918216918591600291166000620027ba565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462001a4e9392831692918216918591600291166001620027ba565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462001aa593928316929182169185916002911681620027ba565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462001af9929182169116683635c9adc5dea00000620027a6565b50565b604080516002808252606082810190935260009190816020015b604080518082019091526000808252602082015281526020019060019003908162001b1657505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062001b775762001b7762004f28565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062001bc05762001bc062004f28565b6020026020010181905250620013bd81620028be565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c3d919062004eb9565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b815260040162001c849a999897969594939291906200509a565b602060405180830381865afa15801562001ca2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cc8919062004eb9565b905062001cd583620028be565b9250606060005b845181101562001d52578162001d188487848151811062001d015762001d0162004f28565b6020026020010151620029f790919063ffffffff16565b60405160200162001d2b92919062005111565b6040516020818303038152906040529150808062001d499062005144565b91505062001cdc565b50886001600160a01b0316636a7612028989898960008060008060008b60405160200162001d81919062004fd7565b6040516020818303038152906040526040518b63ffffffff1660e01b815260040162001db79a999897969594939291906200517f565b6020604051808303816000875af115801562001dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001dfd919062004ff5565b50505050505050505050565b6060806000835190508060011660010362001ec6576002810460010167ffffffffffffffff81111562001e405762001e4062004b04565b60405190808252806020026020018201604052801562001e6a578160200160208202803683370190505b50915062001e9b84600183038151811062001e895762001e8962004f28565b60200260200101516000801b62001678565b8260018451038151811062001eb45762001eb462004f28565b60200260200101818152505062001f13565b6002810467ffffffffffffffff81111562001ee55762001ee562004b04565b60405190808252806020026020018201604052801562001f0f578160200160208202803683370190505b5091505b6000805b6001830381101562001f8b5762001f5c86828151811062001f3c5762001f3c62004f28565b602002602001015187836001018151811062000ccf5762000ccf62004f28565b84838151811062001f715762001f7162004f28565b602090810291909101015260019091019060020162001f17565b5091949350505050565b808214620020a7577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620020239060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99826040516200205c919062005206565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162002095919062005252565b60405180910390a1620020a762002b21565b5050565b806001600160a01b0316826001600160a01b031614620020a7577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200214b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162002184919062005290565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620020959190620052e5565b620021fd6040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062002620565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620022809062002620565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c74000000000000000000000000000000000000000000000091810191909152620023039062002c68565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516000906200234c90620049c0565b604051809103906000f08015801562002369573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b158015620023cd57600080fd5b505af1158015620023e2573d6000803e3d6000fd5b50506024546040518493506001600160a01b0390911691506200240590620049ce565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562002439573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa158015620024c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024ec919062004f6d565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200258a57600080fd5b505af11580156200259f573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200260457600080fd5b505af115801562002619573d6000803e3d6000fd5b5050505050565b604080518082019091526000808252602082015260008260405160200162002649919062004fd7565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620026ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026f4919062004f6d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200274b908490889060040162005323565b600060405180830381600087803b1580156200276657600080fd5b505af11580156200277b573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b620027b5838383600062002c7c565b505050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b88886000896000806000604051602401620027f6979695949392919062005347565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200286d92918790600401620053b1565b6020604051808303816000875af11580156200288d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028b3919062004f6d565b979650505050505050565b606060005b8251811015620029f0576000620028dc82600162005048565b90505b8351811015620029da57838181518110620028fe57620028fe62004f28565b6020026020010151600001516001600160a01b031684838151811062002928576200292862004f28565b6020026020010151600001516001600160a01b03161115620029c55760008483815181106200295b576200295b62004f28565b602002602001015190508482815181106200297a576200297a62004f28565b602002602001015185848151811062002997576200299762004f28565b602002602001018190525080858381518110620029b857620029b862004f28565b6020026020010181905250505b80620029d18162005144565b915050620028df565b5080620029e78162005144565b915050620028c3565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562002a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a9e9190620053e5565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c3a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002bd5929160200162004f8d565b60408051601f198184030181529082905262002bf19162004fd7565b6000604051808303816000865af19150503d806000811462002c30576040519150601f19603f3d011682016040523d82523d6000602084013e62002c35565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b600062002c758262002f14565b5092915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162002d009162004fd7565b6000604051808303816000865af19150503d806000811462002d3f576040519150601f19603f3d011682016040523d82523d6000602084013e62002d44565b606091505b5091505060008180602001905181019062002d60919062004eb9565b905062002db38462002dac8762002da57f70a082310000000000000000000000000000000000000000000000000000000062002d9e60058d62003062565b90620030a2565b90620030db565b9062003104565b821562002f0c5760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b0389169162002e2c919062004fd7565b6000604051808303816000865af19150503d806000811462002e6b576040519150601f19603f3d011682016040523d82523d6000602084013e62002e70565b606091505b5091505060008180602001905181019062002e8c919062004eb9565b90508286101562002eb75762002ea3868462005424565b62002eaf908262005424565b905062002ed2565b62002ec3838762005424565b62002ecf908262005048565b90505b62002f098162002dac7f18160ddd0000000000000000000000000000000000000000000000000000000062002d9e60058d62003062565b50505b505050505050565b6000808260405160200162002f2a919062004fd7565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562002fac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fd2919062004f6d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062003029908590879060040162005323565b600060405180830381600087803b1580156200304457600080fd5b505af115801562003059573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200309b565b6002820180546001810182556000918252602082206001600160a01b038416910155826200309b565b620020a78282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200317d57602002820191906000526020600020905b81548152602001906001019080831162003168575b505050505090506000836200319283620035de565b604051602001620031a592919062004f8d565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a168352815292812091945090929091620032119186918891016200543a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200324c576200324a876200368b565b505b6001600160a01b0385166000908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905190918391620032a59187918991016200543a565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620032ec919062004fd7565b600060405180830381855afa9150503d806000811462003329576040519150601f19603f3d011682016040523d82523d6000602084013e6200332e565b606091505b5091506200334b9050816200334588602062005476565b62003698565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620033cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033f1919062004eb9565b9050808214620034d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000a85565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b1580156200354d57600080fd5b505af115801562003562573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620035ca60028b016000620049dc565b896004016000905550505050505050505050565b6060600082516020620035f2919062005476565b67ffffffffffffffff8111156200360d576200360d62004b04565b6040519080825280601f01601f19166020018201604052801562003638576020820181803683370190505b50905060005b835181101562002c755760008482815181106200365f576200365f62004f28565b602002602001015190508082602002602001840152508080620036829062005144565b9150506200363e565b6000620013bd826200373a565b60008060006020855111620036af578451620036b2565b60205b905060005b818110156200373057620036cd81600862005476565b86620036da838862005048565b81518110620036ed57620036ed62004f28565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620037278162005144565b915050620036b7565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620037ac57602002820191906000526020600020905b81548152602001906001019080831162003797575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062003810925085918791016200543a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620038c7576001600160a01b0384166000908152602087815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909291620038979185918791016200543a565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620038d58362004835565b604051602001620038e892919062004f8d565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200395857600080fd5b505af11580156200396d573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200398e919062004fd7565b600060405180830381855afa9150503d8060008114620039cb576040519150601f19603f3d011682016040523d82523d6000602084013e620039d0565b606091505b509150620039ed905081620039e787602062005476565b620048e2565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562003a68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a929190810190620054f2565b509050805160010362003ec45760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062003aea5762003aea62004f28565b60200260200101516040518363ffffffff1660e01b815260040162003b249291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562003b42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b68919062004eb9565b90508062003bd3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062003ba85762003ba862004f28565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462003cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000a85565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162003ce89291906200543a565b604051602081830303815290604052805190602001208560008151811062003d145762003d1462004f28565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062003d865762003d8662004f28565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262003de9918a918c91016200543a565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162003e6b918a918c91016200543a565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200462d565b600181511115620045a25760005b81518110156200459b5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062003f265762003f2662004f28565b60200260200101516040518363ffffffff1660e01b815260040162003f609291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562003f7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fa4919062004eb9565b9050806200400e577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062003fe35762003fe362004f28565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062004056576200405662004f28565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b158015620040e657600080fd5b505af1158015620040fb573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200411d919062004fd7565b600060405180830381855afa9150503d80600081146200415a576040519150601f19603f3d011682016040523d82523d6000602084013e6200415f565b606091505b5090925090506200417781620039e78b602062005476565b9550818015620041a657507f133700000000000000000000000000000000000000000000000000000000000086145b15620044b0577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620041e49291906200543a565b604051602081830303815290604052805190602001208888815181106200420f576200420f62004f28565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062004280576200428062004f28565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f1683528452808220905192939092620042e3918d918f91016200543a565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c6040516020016200439a9291906200543a565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200441d576200441d62004f28565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200448e57600080fd5b505af1158015620044a3573d6000803e3d6000fd5b505050505050506200459b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620044f857620044f862004f28565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200456957600080fd5b505af11580156200457e573d6000803e3d6000fd5b505050505050508080620045929062005144565b91505062003ed2565b506200462d565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000a85565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620046899188918a91016200543a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662004740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000a85565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620047a460028a016000620049dc565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620048029188918a91016200543a565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062004849919062005476565b67ffffffffffffffff81111562004864576200486462004b04565b6040519080825280601f01601f1916602001820160405280156200488f576020820181803683370190505b50905060005b835181101562002c75576000848281518110620048b657620048b662004f28565b602002602001015190508082602002602001840152508080620048d99062005144565b91505062004895565b60008060006020855111620048f9578451620048fc565b60205b905060005b8181101562003730576200491781600862005476565b8662004924838862005048565b8151811062004937576200493762004f28565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620049718162005144565b91505062004901565b61237a806200555e83390190565b61013c80620078d883390190565b6108098062007a1483390190565b610200806200821d83390190565b611246806200841d83390190565b610d06806200966383390190565b6153a2806200a36983390190565b508054600082559060005260206000209081019062001af991905b8082111562004a0d5760008155600101620049f7565b5090565b60006020828403121562004a2457600080fd5b5035919050565b60005b8381101562004a4857818101518382015260200162004a2e565b50506000910152565b6000815180845262004a6b81602086016020860162004a2b565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200166f606083018462004a51565b600081518084526020808501945080840160005b8381101562004ae45781516001600160a01b03168752958201959082019060010162004abd565b509495945050505050565b6020815260006200309b602083018462004aa9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562004b5f5762004b5f62004b04565b604052919050565b600067ffffffffffffffff82111562004b845762004b8462004b04565b5060051b60200190565b600082601f83011262004ba057600080fd5b8135602062004bb962004bb38362004b67565b62004b33565b82815260059290921b8401810191818101908684111562004bd957600080fd5b8286015b8481101562004bf6578035835291830191830162004bdd565b509695505050505050565b60006020828403121562004c1457600080fd5b813567ffffffffffffffff81111562004c2c57600080fd5b62004c3a8482850162004b8e565b949350505050565b60008060006060848603121562004c5857600080fd5b83359250602084013567ffffffffffffffff81111562004c7757600080fd5b62004c858682870162004b8e565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562004d74578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562004d5e5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062004d1a565b50978a0197955050509187019160010162004cbe565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562004dfa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262004de785835162004a51565b9450928501929085019060010162004daa565b5092979650505050505050565b6000806040838503121562004e1b57600080fd5b823567ffffffffffffffff81111562004e3357600080fd5b62004e418582860162004b8e565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b8181101562004e8a5783518352928401929184019160010162004e6c565b50909695505050505050565b6000806040838503121562004eaa57600080fd5b50508035926020909101359150565b60006020828403121562004ecc57600080fd5b5051919050565b600181811c9082168062004ee857607f821691505b60208210810362004f22577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b038116811462001af957600080fd5b60006020828403121562004f8057600080fd5b81516200309b8162004f57565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162004fc981600485016020870162004a2b565b919091016004019392505050565b6000825162004feb81846020870162004a2b565b9190910192915050565b6000602082840312156200500857600080fd5b815180151581146200309b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620013bd57620013bd62005019565b6002811062005096577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c6020850152816040850152620050c68285018d62004a51565b9250620050d7606085018c6200505e565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200512581846020880162004a2b565b8351908301906200513b81836020880162004a2b565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362005178576200517862005019565b5060010190565b60006101406001600160a01b03808e1684528c6020850152816040850152620051ab8285018d62004a51565b9150620051bc606085018c6200505e565b8960808501528860a08501528760c085015280871660e085015280861661010085015250828103610120840152620051f5818562004a51565b9d9c50505050505050505050505050565b6040815260006200524460408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200524460408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b604081526000620052ce60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620052ce60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6001600160a01b038316815260406020820152600062004c3a604083018462004a51565b60006101008083526200535d8184018b62004aa9565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b0384168152606060208201526000620053d5606083018562004a51565b9050826040830152949350505050565b600080600060608486031215620053fb57600080fd5b835160ff811681146200540d57600080fd5b602085015160409095015190969495509392505050565b81810381811115620013bd57620013bd62005019565b825160009082906020808701845b83811015620054665781518552938201939082019060010162005448565b5050948252509092019392505050565b8082028115828204841417620013bd57620013bd62005019565b600082601f830112620054a257600080fd5b81516020620054b562004bb38362004b67565b82815260059290921b84018101918181019086841115620054d557600080fd5b8286015b8481101562004bf65780518352918301918301620054d9565b600080604083850312156200550657600080fd5b825167ffffffffffffffff808211156200551f57600080fd5b6200552d8683870162005490565b935060208501519150808211156200554457600080fd5b50620055538582860162005490565b915050925092905056fe60a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a2646970667358221220b1b00effbe0bca8107c2d74b7c7518e8014d846a7ff398f9f571802671a5e54964736f6c63430008130033","sourceMap":"987:7905:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:955;;;:::i;:::-;;595:17:106;;;;;-1:-1:-1;;;;;595:17:106;;;;;;-1:-1:-1;;;;;200:55:122;;;182:74;;170:2;155:18;595:17:106;;;;;;;;748:20:117;;;;;-1:-1:-1;;;;;748:20:117;;;1586:74:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2161:134:33:-;;;:::i;:::-;;;;;;;:::i;800:20:117:-;;;;;-1:-1:-1;;;;;800:20:117;;;1025:26:116;;;;;-1:-1:-1;;;;;1025:26:116;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;4614:25:122;;;4602:2;4587:18;987:253:45;4468:177:122;3024:158:107;;;:::i;2930:133:33:-;;;:::i;2631:141::-;;;:::i;1125:32:115:-;;;;;-1:-1:-1;;;;;1125:32:115;;;452:451:45;;;;;;:::i;:::-;;:::i;:::-;;;5566:14:122;;5559:22;5541:41;;5529:2;5514:18;452:451:45;5401:187:122;2447:178:33;;;:::i;:::-;;;;;;;:::i;572:17:106:-;;;;;-1:-1:-1;;;;;572:17:106;;;1232:22:115;;;;;-1:-1:-1;;;;;1232:22:115;;;2301:140:33;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;978:41:116:-;;;;;-1:-1:-1;;;;;978:41:116;;;549:17:106;;;;;-1:-1:-1;;;;;549:17:106;;;1866:141:33;;;:::i;865:21:116:-;;;;;-1:-1:-1;;;;;865:21:116;;;2744:190:107;;;:::i;1246:1168:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;892:31:116:-;;;;;-1:-1:-1;;;;;892:31:116;;;929:43;;;;;-1:-1:-1;;;;;929:43:116;;;5179:952:45;;;;;;:::i;:::-;;:::i;774:20:117:-;;;;;-1:-1:-1;;;;;774:20:117;;;407:409:44;;;;;;:::i;:::-;;:::i;1057:36:116:-;;;;;-1:-1:-1;;;;;1057:36:116;;;2013:142:33;;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;1572:26:26:-;;;;;;;;;1100:19:115;;;;;-1:-1:-1;;;;;1100:19:115;;;1667:955:107;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:107;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;200:55:122;;;182:74;;170:2;155:18;1819:38:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:107;:54;;;;-1:-1:-1;;;;;1803:54:107;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:107;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;11726:25:122;;;;-1:-1:-1;;;;;2216:13:107;11767:18:122;;;11760:83;11699:18;;2101:143:107;;;-1:-1:-1;;2101:143:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:107;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:107;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:107;:48;;;;-1:-1:-1;;;;;2366:48:107;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:107;:49;;;;-1:-1:-1;;;;;2478:49:107;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:107;:37;;;;-1:-1:-1;;;;;2537:37:107;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;200:55:122;;;182:74;;170:2;155:18;2592:23:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:107;:30;;;;-1:-1:-1;;;;;2585:30:107;;;;;;;;;;1667:955::o;1586:74::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:134:33:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:33;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;987:253:45:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;12752:2:122;1067:63:45;;;12734:21:122;12791:2;12771:18;;;12764:30;12830:34;12810:18;;;12803:62;12901:5;12881:18;;;12874:33;12924:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:107:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:107;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:107;-1:-1:-1;;;;;3146:26:107;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;:::-;3024:158::o;2930:133:33:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:33;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:33;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;452:451:45:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;;452:451;-1:-1:-1;;;452:451:45:o;2447:178:33:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:107;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:107;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;13357:55:122;;;2840:61:107;;;13339:74:122;13429:18;;;13422:34;13312:18;;2840:61:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:107;2823:8;:104::i;1246:1168:45:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;14164:2:122;1350:64:45;;;14146:21:122;14203:2;14183:18;;;14176:30;14242:34;14222:18;;;14215:62;14313:6;14293:18;;;14286:34;14337:19;;1350:64:45;13962:400:122;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;13339:74:122;;;2221:17:26;13429:18:122;;;13422:34;2196:43:26;;;;;;;;;13312:18:122;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;5179:952:45:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;2013:142:33:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:33;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;619:1105:106:-;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:106;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:106;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:106;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:106;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:106;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:106;;1223:9;;-1:-1:-1;1235:10:106;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:106;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:106;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:106;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:106;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:106;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:106;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:106;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;:::-;673:1051;619:1105::o;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:106;;;;;;;;;;;;-1:-1:-1;;1875:19:106;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:106;;;;;;;;;:11;;;;-1:-1:-1;1875:19:106;:11;;-1:-1:-1;;1875:11:106;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:106;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:119:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:119;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:119;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:119;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2224:661;;;2031:854;;;;;;:::o;2493:990:45:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;19744:2:122;19726:21;;;19783:2;19763:18;;;19756:30;19822:34;19817:2;19802:18;;19795:62;19893:7;19888:2;19873:18;;19866:35;19933:3;19918:19;;19542:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;:::-;;;;;;;;4349:6;:4;:6::i;:::-;4095:277;;:::o;3622:::-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;21184:2:122;21166:21;;;21223:2;21203:18;;;21196:30;21262:34;21257:2;21242:18;;21235:62;21333:7;21328:2;21313:18;;21306:35;21373:3;21358:19;;20982:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;1332:965:115:-;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:115;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:115;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:115;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:115;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:115;;;1863:39;;;182:74:122;1780:73:115;;-1:-1:-1;1863:27:115;;;;;155:18:122;;1863:39:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:115;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:115;;;;-1:-1:-1;2012:36:115;;;:::i;:::-;-1:-1:-1;;;;;22496:15:122;;;22478:34;;22548:15;;22543:2;22528:18;;22521:43;22405:2;22390:18;2012:36:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:115;:49;;;;-1:-1:-1;;;;;1999:49:115;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:115;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;182:74:122;2228:8:115;;;;155:18:122;;2228:20:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:115;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:115;;;2258:32;;;182:74:122;2258:19:115;;;;-1:-1:-1;2258:19:115;;-1:-1:-1;155:18:122;;2258:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:933;1332:965::o;373:261:120:-;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:120;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:120;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;4614:25:122;;;489:33:120;-1:-1:-1;481:42:120;;206;;548:7;;4587:18:122;;548:11:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:120;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:120;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;20040:117:31:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;:::-;20040:117;;;:::o;953:558:119:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:119;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:119;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;1297:495:120:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:120;;;;:::i;:::-;;;;1405:356;;;-1:-1:-1;1777:8:120;;1297:495;-1:-1:-1;1297:495:120:o;829:297::-;980:10;;;;972:25;;;;;;;;25740::122;;;;25781:18;;;25774:34;;;914:12:120;;939:7;;;;;;206:42;;972:7;;25713:18:122;;972:25:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:120;;-1:-1:-1;938:59:120;-1:-1:-1;1008:22:120;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:120;;;;;;26400:19:122;;;;26435:12;;;26428:28;;;;-1:-1:-1;;;26494:3:122;26490:16;;;;26508:66;26486:89;26472:12;;;26465:111;1068:25:120;;;;;;;;;26592:12:122;;;;1068:25:120;;;;;-1:-1:-1;;;829:297:120:o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;26817:74:122;;;2677:17:26;26907:18:122;;;26900:34;;;;2712:4:26;26950:18:122;;;26943:34;2489:11:26;;1671:64;2586:43;;26790:18:122;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;:::-;-1:-1:-1;15402:30:31;15314:125;-1:-1:-1;;15314:125:31:o;20436:825::-;20600:38;;;-1:-1:-1;;;;;200:55:122;;;20600:38:31;;;;182:74:122;;;;20600:38:31;;;;;;;;;;155:18:122;;;;20600:38:31;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:31;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:31;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;:60::-;20859:396;;20847:408;20521:740;;20436:825;;;;:::o;15033:242::-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:31;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;4614:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;4587:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;7700:156:36:-;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:36;;;;;-1:-1:-1;4573:12:36;7813:36;7806:43;7700:156;-1:-1:-1;;;7700:156:36:o;7862:143::-;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:36;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:36;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:36;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:36;;;;;;;;;-1:-1:-1;;;;;9604:15:36;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:36;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:36;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:36;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:36;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:36;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:36;-1:-1:-1;9922:38:36;;-1:-1:-1;9857:44:36;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;13357:55:122;;9995:18:36;;;13339:74:122;13429:18;;;13422:34;;;9915:45:36;;-1:-1:-1;9980:12:36;;-1:-1:-1;9995:7:36;;;;13312:18:122;;9995::36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;28111:2:122;10056:175:36;;;28093:21:122;28150:3;28130:18;;;28123:31;28190:34;28170:18;;;28163:62;28261:34;28241:18;;;28234:62;28333:34;28312:19;;;28305:63;28405:17;28384:19;;;28377:46;28440:19;;10056:175:36;27909:556:122;10056:175:36;10251:24;;;;;-1:-1:-1;;;;;26835:55:122;;10251:24:36;;;26817:74:122;26907:18;;;26900:34;;;26950:18;;;26943:34;;;10251:8:36;;;;26790:18:122;;10251:24:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:36;;;10285:19;;;;;;-1:-1:-1;10321:9:36;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:36;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;11471:393::-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:36;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:36;;11110:304;-1:-1:-1;;;;11110:304:36:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:36;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:36;:15;;-1:-1:-1;1568:34:36;;-1:-1:-1;1452:33:36;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:36;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:36;;;;1532:174;;;-1:-1:-1;;;;;1627:15:36;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:36;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:36;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:36;-1:-1:-1;1903:38:36;;-1:-1:-1;1838:44:36;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;200:55:122;;1990:25:36;;;182:74:122;1896:45:36;;-1:-1:-1;1963:22:36;;-1:-1:-1;1990:11:36;;;;155:18:122;;1990:25:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:36;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:36;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;13357:55:122;;;;13339:74;;13444:2;13429:18;;13422:34;13327:2;13312:18;;13143:319;2077:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:36;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;13357:55:122;;;13339:74;;13429:18;;;13422:34;13312:18;2160:44:36;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;28111:2:122;2268:187:36;;;28093:21:122;28150:3;28130:18;;;28123:31;28190:34;28170:18;;;28163:62;28261:34;28241:18;;;28234:62;28333:34;28312:19;;;28305:63;28405:17;28384:19;;;28377:46;28440:19;;2268:187:36;27909:556:122;2268:187:36;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;30302:55:122;;;30284:74;;30406:66;30394:79;;;30374:18;;;30367:107;;;;30490:18;;;30483:34;30548:2;30533:18;;30526:34;30271:3;30256:19;2488:86:36;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:36;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:36;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:36;;;:88;;;;-1:-1:-1;;;;;2690:15:36;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:36;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:36;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:36;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:36;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:36;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;13357:55:122;;;;13339:74;;13444:2;13429:18;;13422:34;13327:2;13312:18;;13143:319;2894:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:36;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;13357:55:122;;;13339:74;;13429:18;;;13422:34;13312:18;2985:44:36;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:36;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;26835:55:122;;;3090:43:36;;;26817:74:122;26907:18;;;26900:34;3114:18:36;26950::122;;;26943:34;26790:18;;3090:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:36;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:36;;-1:-1:-1;3238:38:36;-1:-1:-1;3305:38:36;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;30302:55:122;;;30284:74;;30406:66;30394:79;;;30374:18;;;30367:107;;;;30490:18;;;30483:34;30548:2;30533:18;;30526:34;30271:3;30256:19;3519:86:36;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:36;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:36;-1:-1:-1;;;;;3737:15:36;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:36;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;26835:55:122;;;3834:29:36;;;26817:74:122;26907:18;;;26900:34;26950:18;;;26943:34;;;26790:18;;3834:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:36;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;26835:55:122;;;3926:29:36;;;26817:74:122;26907:18;;;26900:34;26950:18;;;26943:34;;;26790:18;;3926:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;30773:2:122;4000:74:36;;;30755:21:122;30792:18;;;30785:30;;;;30851:34;30831:18;;;30824:62;30922:34;30902:18;;;30895:62;30974:19;;4000:74:36;30571:428:122;2782:1303:36;-1:-1:-1;;;;;4116:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:36;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:36;;;;4095:162;;;;;;;31206:2:122;4095:162:36;;;31188:21:122;31245:2;31225:18;;;31218:30;31284:34;31264:18;;;31257:62;31355:17;31335:18;;;31328:45;31390:19;;4095:162:36;31004:411:122;4095:162:36;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:36;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:36;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:36;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;513:180:122:-;572:6;625:2;613:9;604:7;600:23;596:32;593:52;;;641:1;638;631:12;593:52;-1:-1:-1;664:23:122;;513:180;-1:-1:-1;513:180:122:o;698:250::-;783:1;793:113;807:6;804:1;801:13;793:113;;;883:11;;;877:18;864:11;;;857:39;829:2;822:10;793:113;;;-1:-1:-1;;940:1:122;922:16;;915:27;698:250::o;953:329::-;994:3;1032:5;1026:12;1059:6;1054:3;1047:19;1075:76;1144:6;1137:4;1132:3;1128:14;1121:4;1114:5;1110:16;1075:76;:::i;:::-;1196:2;1184:15;-1:-1:-1;;1180:88:122;1171:98;;;;1271:4;1167:109;;953:329;-1:-1:-1;;953:329:122:o;1287:435::-;-1:-1:-1;;;;;1521:6:122;1517:55;1506:9;1499:74;1609:6;1604:2;1593:9;1589:18;1582:34;1652:2;1647;1636:9;1632:18;1625:30;1480:4;1672:44;1712:2;1701:9;1697:18;1689:6;1672:44;:::i;1727:484::-;1780:3;1818:5;1812:12;1845:6;1840:3;1833:19;1871:4;1900:2;1895:3;1891:12;1884:19;;1937:2;1930:5;1926:14;1958:1;1968:218;1982:6;1979:1;1976:13;1968:218;;;2047:13;;-1:-1:-1;;;;;2043:62:122;2031:75;;2126:12;;;;2161:15;;;;2004:1;1997:9;1968:218;;;-1:-1:-1;2202:3:122;;1727:484;-1:-1:-1;;;;;1727:484:122:o;2216:261::-;2395:2;2384:9;2377:21;2358:4;2415:56;2467:2;2456:9;2452:18;2444:6;2415:56;:::i;2732:184::-;2784:77;2781:1;2774:88;2881:4;2878:1;2871:15;2905:4;2902:1;2895:15;2921:334;2992:2;2986:9;3048:2;3038:13;;-1:-1:-1;;3034:86:122;3022:99;;3151:18;3136:34;;3172:22;;;3133:62;3130:88;;;3198:18;;:::i;:::-;3234:2;3227:22;2921:334;;-1:-1:-1;2921:334:122:o;3260:183::-;3320:4;3353:18;3345:6;3342:30;3339:56;;;3375:18;;:::i;:::-;-1:-1:-1;3420:1:122;3416:14;3432:4;3412:25;;3260:183::o;3448:662::-;3502:5;3555:3;3548:4;3540:6;3536:17;3532:27;3522:55;;3573:1;3570;3563:12;3522:55;3609:6;3596:20;3635:4;3659:60;3675:43;3715:2;3675:43;:::i;:::-;3659:60;:::i;:::-;3753:15;;;3839:1;3835:10;;;;3823:23;;3819:32;;;3784:12;;;;3863:15;;;3860:35;;;3891:1;3888;3881:12;3860:35;3927:2;3919:6;3915:15;3939:142;3955:6;3950:3;3947:15;3939:142;;;4021:17;;4009:30;;4059:12;;;;3972;;3939:142;;;-1:-1:-1;4099:5:122;3448:662;-1:-1:-1;;;;;;3448:662:122:o;4115:348::-;4199:6;4252:2;4240:9;4231:7;4227:23;4223:32;4220:52;;;4268:1;4265;4258:12;4220:52;4308:9;4295:23;4341:18;4333:6;4330:30;4327:50;;;4373:1;4370;4363:12;4327:50;4396:61;4449:7;4440:6;4429:9;4425:22;4396:61;:::i;:::-;4386:71;4115:348;-1:-1:-1;;;;4115:348:122:o;4912:484::-;5014:6;5022;5030;5083:2;5071:9;5062:7;5058:23;5054:32;5051:52;;;5099:1;5096;5089:12;5051:52;5135:9;5122:23;5112:33;;5196:2;5185:9;5181:18;5168:32;5223:18;5215:6;5212:30;5209:50;;;5255:1;5252;5245:12;5209:50;5278:61;5331:7;5322:6;5311:9;5307:22;5278:61;:::i;:::-;5268:71;;;5386:2;5375:9;5371:18;5358:32;5348:42;;4912:484;;;;;:::o;5593:1697::-;5797:4;5826:2;5866;5855:9;5851:18;5896:2;5885:9;5878:21;5919:6;5954;5948:13;5985:6;5977;5970:22;6011:2;6001:12;;6044:2;6033:9;6029:18;6022:25;;6106:2;6096:6;6093:1;6089:14;6078:9;6074:30;6070:39;6144:2;6136:6;6132:15;6165:1;6186;6196:1065;6212:6;6207:3;6204:15;6196:1065;;;6281:22;;;6305:66;6277:95;6265:108;;6396:13;;6483:9;;-1:-1:-1;;;;;6479:58:122;6464:74;;6577:11;;6571:18;6609:15;;;6602:27;;;6690:19;;6436:15;;;6722:24;;;6812:21;;;;6857:1;;6780:2;6768:15;;;6871:282;6887:8;6882:3;6879:17;6871:282;;;6968:15;;6985:66;6964:88;6950:103;;7122:17;;;;6915:1;6906:11;;;;;7079:14;;;;6871:282;;;-1:-1:-1;7239:12:122;;;;7176:5;-1:-1:-1;;;7204:15:122;;;;6238:1;6229:11;6196:1065;;;-1:-1:-1;7278:6:122;;5593:1697;-1:-1:-1;;;;;;;;;5593:1697:122:o;7526:861::-;7688:4;7717:2;7757;7746:9;7742:18;7787:2;7776:9;7769:21;7810:6;7845;7839:13;7876:6;7868;7861:22;7914:2;7903:9;7899:18;7892:25;;7976:2;7966:6;7963:1;7959:14;7948:9;7944:30;7940:39;7926:53;;8014:2;8006:6;8002:15;8035:1;8045:313;8059:6;8056:1;8053:13;8045:313;;;8148:66;8136:9;8128:6;8124:22;8120:95;8115:3;8108:108;8239:39;8271:6;8262;8256:13;8239:39;:::i;:::-;8229:49;-1:-1:-1;8336:12:122;;;;8301:15;;;;8081:1;8074:9;8045:313;;;-1:-1:-1;8375:6:122;;7526:861;-1:-1:-1;;;;;;;7526:861:122:o;8658:416::-;8751:6;8759;8812:2;8800:9;8791:7;8787:23;8783:32;8780:52;;;8828:1;8825;8818:12;8780:52;8868:9;8855:23;8901:18;8893:6;8890:30;8887:50;;;8933:1;8930;8923:12;8887:50;8956:61;9009:7;9000:6;8989:9;8985:22;8956:61;:::i;:::-;8946:71;9064:2;9049:18;;;;9036:32;;-1:-1:-1;;;;8658:416:122:o;9079:632::-;9250:2;9302:21;;;9372:13;;9275:18;;;9394:22;;;9221:4;;9250:2;9473:15;;;;9447:2;9432:18;;;9221:4;9516:169;9530:6;9527:1;9524:13;9516:169;;;9591:13;;9579:26;;9660:15;;;;9625:12;;;;9552:1;9545:9;9516:169;;;-1:-1:-1;9702:3:122;;9079:632;-1:-1:-1;;;;;;9079:632:122:o;10609:248::-;10677:6;10685;10738:2;10726:9;10717:7;10713:23;10709:32;10706:52;;;10754:1;10751;10744:12;10706:52;-1:-1:-1;;10777:23:122;;;10847:2;10832:18;;;10819:32;;-1:-1:-1;10609:248:122:o;11363:184::-;11433:6;11486:2;11474:9;11465:7;11461:23;11457:32;11454:52;;;11502:1;11499;11492:12;11454:52;-1:-1:-1;11525:16:122;;11363:184;-1:-1:-1;11363:184:122:o;12108:437::-;12187:1;12183:12;;;;12230;;;12251:61;;12305:4;12297:6;12293:17;12283:27;;12251:61;12358:2;12350:6;12347:14;12327:18;12324:38;12321:218;;12395:77;12392:1;12385:88;12496:4;12493:1;12486:15;12524:4;12521:1;12514:15;12321:218;;12108:437;;;:::o;12954:184::-;13006:77;13003:1;12996:88;13103:4;13100:1;13093:15;13127:4;13124:1;13117:15;13467:178;-1:-1:-1;;;;;13570:5:122;13566:54;13559:5;13556:65;13546:93;;13635:1;13632;13625:12;13650:307;13752:6;13805:2;13793:9;13784:7;13780:23;13776:32;13773:52;;;13821:1;13818;13811:12;13773:52;13853:9;13847:16;13872:55;13921:5;13872:55;:::i;14858:430::-;15055:66;15047:6;15043:79;15038:3;15031:92;15013:3;15152:6;15146:13;15168:74;15235:6;15231:1;15226:3;15222:11;15215:4;15207:6;15203:17;15168:74;:::i;:::-;15262:16;;;;15280:1;15258:24;;14858:430;-1:-1:-1;;;14858:430:122:o;15293:287::-;15422:3;15460:6;15454:13;15476:66;15535:6;15530:3;15523:4;15515:6;15511:17;15476:66;:::i;:::-;15558:16;;;;;15293:287;-1:-1:-1;;15293:287:122:o;15585:277::-;15652:6;15705:2;15693:9;15684:7;15680:23;15676:32;15673:52;;;15721:1;15718;15711:12;15673:52;15753:9;15747:16;15806:5;15799:13;15792:21;15785:5;15782:32;15772:60;;15828:1;15825;15818:12;15867:184;15919:77;15916:1;15909:88;16016:4;16013:1;16006:15;16040:4;16037:1;16030:15;16056:125;16121:9;;;16142:10;;;16139:36;;;16155:18;;:::i;16375:294::-;16456:1;16449:5;16446:12;16436:200;;16492:77;16489:1;16482:88;16593:4;16590:1;16583:15;16621:4;16618:1;16611:15;16436:200;16645:18;;16375:294::o;16674:1028::-;17073:4;17102:3;-1:-1:-1;;;;;17205:2:122;17197:6;17193:15;17182:9;17175:34;17245:6;17240:2;17229:9;17225:18;17218:34;17288:2;17283;17272:9;17268:18;17261:30;17308:44;17348:2;17337:9;17333:18;17325:6;17308:44;:::i;:::-;17300:52;;17361:53;17410:2;17399:9;17395:18;17387:6;17361:53;:::i;:::-;17445:3;17430:19;;17423:35;;;;-1:-1:-1;17489:3:122;17474:19;;17467:35;;;;17533:3;17518:19;;17511:35;;;;17583:15;;;17577:3;17562:19;;17555:44;17636:15;;;17630:3;17615:19;;17608:44;17683:3;17668:19;17661:35;;;;16674:1028;;-1:-1:-1;;;;16674:1028:122:o;17707:492::-;17882:3;17920:6;17914:13;17936:66;17995:6;17990:3;17983:4;17975:6;17971:17;17936:66;:::i;:::-;18065:13;;18024:16;;;;18087:70;18065:13;18024:16;18134:4;18122:17;;18087:70;:::i;:::-;18173:20;;17707:492;-1:-1:-1;;;;17707:492:122:o;18204:195::-;18243:3;18274:66;18267:5;18264:77;18261:103;;18344:18;;:::i;:::-;-1:-1:-1;18391:1:122;18380:13;;18204:195::o;18404:1133::-;18837:4;18866:3;-1:-1:-1;;;;;18969:2:122;18961:6;18957:15;18946:9;18939:34;19009:6;19004:2;18993:9;18989:18;18982:34;19052:2;19047;19036:9;19032:18;19025:30;19078:44;19118:2;19107:9;19103:18;19095:6;19078:44;:::i;:::-;19064:58;;19131:53;19180:2;19169:9;19165:18;19157:6;19131:53;:::i;:::-;19221:6;19215:3;19204:9;19200:19;19193:35;19265:6;19259:3;19248:9;19244:19;19237:35;19309:6;19303:3;19292:9;19288:19;19281:35;19365:2;19357:6;19353:15;19347:3;19336:9;19332:19;19325:44;19418:2;19410:6;19406:15;19400:3;19389:9;19385:19;19378:44;;19471:9;19463:6;19459:22;19453:3;19442:9;19438:19;19431:51;19499:32;19524:6;19516;19499:32;:::i;:::-;19491:40;18404:1133;-1:-1:-1;;;;;;;;;;;;;18404:1133:122:o;20112:348::-;20342:2;20331:9;20324:21;20305:4;20362:49;20407:2;20396:9;20392:18;20025:2;20013:15;;20060:12;20053:4;20044:14;;20037:36;20098:2;20089:12;;19948:159;20362:49;20354:57;;20447:6;20442:2;20431:9;20427:18;20420:34;20112:348;;;;:::o;20629:::-;20859:2;20848:9;20841:21;20822:4;20879:49;20924:2;20913:9;20909:18;20542:2;20530:15;;20577:12;20570:4;20561:14;;20554:36;20615:2;20606:12;;20465:159;21388:397;21618:2;21607:9;21600:21;21581:4;21638:49;21683:2;21672:9;21668:18;20025:2;20013:15;;20060:12;20053:4;20044:14;;20037:36;20098:2;20089:12;;19948:159;21638:49;21630:57;;-1:-1:-1;;;;;21727:6:122;21723:55;21718:2;21707:9;21703:18;21696:83;21388:397;;;;:::o;21790:::-;22020:2;22009:9;22002:21;21983:4;22040:49;22085:2;22074:9;22070:18;20542:2;20530:15;;20577:12;20570:4;20561:14;;20554:36;20615:2;20606:12;;20465:159;23454:339;-1:-1:-1;;;;;23635:6:122;23631:55;23620:9;23613:74;23723:2;23718;23707:9;23703:18;23696:30;23594:4;23743:44;23783:2;23772:9;23768:18;23760:6;23743:44;:::i;23798:1051::-;24215:4;24244:3;24274:2;24263:9;24256:21;24300:56;24352:2;24341:9;24337:18;24329:6;24300:56;:::i;:::-;24387:2;24372:18;;;24365:34;;;;-1:-1:-1;;;;;24496:15:122;;;24491:2;24476:18;;24469:43;24548:22;;;24543:2;24528:18;;24521:50;-1:-1:-1;24580:17:122;;24666:15;;;24660:3;24645:19;;24638:44;-1:-1:-1;;24719:15:122;;;24713:3;24698:19;;24691:44;24784:4;24772:17;;;;24766:3;24751:19;;24744:46;24827:15;;;24821:3;24806:19;;;24799:44;;;;24614:15;;23798:1051;-1:-1:-1;23798:1051:122:o;24854:408::-;-1:-1:-1;;;;;25061:6:122;25057:55;25046:9;25039:74;25149:2;25144;25133:9;25129:18;25122:30;25020:4;25169:44;25209:2;25198:9;25194:18;25186:6;25169:44;:::i;:::-;25161:52;;25249:6;25244:2;25233:9;25229:18;25222:34;24854:408;;;;;;:::o;25819:395::-;25905:6;25913;25921;25974:2;25962:9;25953:7;25949:23;25945:32;25942:52;;;25990:1;25987;25980:12;25942:52;26022:9;26016:16;26072:4;26065:5;26061:16;26054:5;26051:27;26041:55;;26092:1;26089;26082:12;26041:55;26160:2;26145:18;;26139:25;26204:2;26189:18;;;26183:25;26115:5;;26139:25;;-1:-1:-1;26183:25:122;25819:395;-1:-1:-1;;;25819:395:122:o;26988:128::-;27055:9;;;27076:11;;;27073:37;;;27090:18;;:::i;27121:610::-;27367:13;;27310:3;;27341;;27420:4;27447:15;;;27310:3;27490:175;27504:6;27501:1;27498:13;27490:175;;;27567:13;;27553:28;;27603:14;;;;27640:15;;;;27526:1;27519:9;27490:175;;;-1:-1:-1;;27674:21:122;;;-1:-1:-1;27711:14:122;;;;;-1:-1:-1;;;27121:610:122:o;27736:168::-;27809:9;;;27840;;27857:15;;;27851:22;;27837:37;27827:71;;27878:18;;:::i;28470:659::-;28535:5;28588:3;28581:4;28573:6;28569:17;28565:27;28555:55;;28606:1;28603;28596:12;28555:55;28635:6;28629:13;28661:4;28685:60;28701:43;28741:2;28701:43;:::i;28685:60::-;28779:15;;;28865:1;28861:10;;;;28849:23;;28845:32;;;28810:12;;;;28889:15;;;28886:35;;;28917:1;28914;28907:12;28886:35;28953:2;28945:6;28941:15;28965:135;28981:6;28976:3;28973:15;28965:135;;;29047:10;;29035:23;;29078:12;;;;28998;;28965:135;;29134:614;29263:6;29271;29324:2;29312:9;29303:7;29299:23;29295:32;29292:52;;;29340:1;29337;29330:12;29292:52;29373:9;29367:16;29402:18;29443:2;29435:6;29432:14;29429:34;;;29459:1;29456;29449:12;29429:34;29482:72;29546:7;29537:6;29526:9;29522:22;29482:72;:::i;:::-;29472:82;;29600:2;29589:9;29585:18;29579:25;29563:41;;29629:2;29619:8;29616:16;29613:36;;;29645:1;29642;29635:12;29613:36;;29668:74;29734:7;29723:8;29712:9;29708:24;29668:74;:::i;:::-;29658:84;;;29134:614;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.base.t.sol\":\"BaseComposableCoWTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.base.t.sol":"BaseComposableCoWTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/ComposableCoW.base.t.sol/MirrorConditionalOrder.json b/out/ComposableCoW.base.t.sol/MirrorConditionalOrder.json new file mode 100644 index 0000000..fd08012 --- /dev/null +++ b/out/ComposableCoW.base.t.sol/MirrorConditionalOrder.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"verify","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"pure"},{"type":"error","name":"OrderNotValid","inputs":[{"name":"","type":"string","internalType":"string"}]},{"type":"error","name":"PollNever","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryAtBlock","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryAtEpoch","inputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryNextBlock","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c63430008130033","sourceMap":"10350:452:107:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c63430008130033","sourceMap":"10350:452:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10409:391;;;;;;:::i;:::-;;:::i;:::-;;;10731:14;10728:1;;10712:34;10731:14;10728:1;10759:25;14:196:122;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:122;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:1287::-;735:6;743;751;759;767;775;783;791;799;807;860:3;848:9;839:7;835:23;831:33;828:53;;;877:1;874;867:12;828:53;900:29;919:9;900:29;:::i;:::-;890:39;;948:38;982:2;971:9;967:18;948:38;:::i;:::-;938:48;;1033:2;1022:9;1018:18;1005:32;995:42;;1084:2;1073:9;1069:18;1056:32;1046:42;;1135:3;1124:9;1120:19;1107:33;1097:43;;1191:3;1180:9;1176:19;1163:33;1215:18;1256:2;1248:6;1245:14;1242:34;;;1272:1;1269;1262:12;1242:34;1311:58;1361:7;1352:6;1341:9;1337:22;1311:58;:::i;:::-;1388:8;;-1:-1:-1;1285:84:122;-1:-1:-1;1476:3:122;1461:19;;1448:33;;-1:-1:-1;1493:16:122;;;1490:36;;;1522:1;1519;1512:12;1490:36;;1561:60;1613:7;1602:8;1591:9;1587:24;1561:60;:::i;:::-;1640:8;;-1:-1:-1;1535:86:122;-1:-1:-1;;1789:3:122;1695:23;;;1720:66;1691:96;1687:106;1684:126;;;1806:1;1803;1796:12;1684:126;1844:3;1833:9;1829:19;1819:29;;567:1287;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))":"14a2a784"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"OrderNotValid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollNever\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryAtBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryAtEpoch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryNextBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A conditional order handler used for testing that reverts on verify\",\"errors\":{\"OrderNotValid(string)\":[{\"details\":\"This error is returned by the `getTradeableOrder` function if the order condition is not met. A parameter of `string` type is included to allow the caller to specify the reason for the failure.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.base.t.sol\":\"MirrorConditionalOrder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string"}],"type":"error","name":"OrderNotValid"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollNever"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryAtBlock"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryAtEpoch"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryNextBlock"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"struct GPv2Order.Data","name":"","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]}],"stateMutability":"pure","type":"function","name":"verify"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.base.t.sol":"MirrorConditionalOrder"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/ComposableCoW.base.t.sol/TestConditionalOrderGenerator.json b/out/ComposableCoW.base.t.sol/TestConditionalOrderGenerator.json new file mode 100644 index 0000000..6220800 --- /dev/null +++ b/out/ComposableCoW.base.t.sol/TestConditionalOrderGenerator.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getTradeableOrder","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"offchainInput","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"order","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"pure"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verify","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"},{"name":"ctx","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"},{"name":"offchainInput","type":"bytes","internalType":"bytes"},{"name":"","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"view"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"error","name":"OrderNotValid","inputs":[{"name":"","type":"string","internalType":"string"}]},{"type":"error","name":"PollNever","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryAtBlock","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryAtEpoch","inputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"PollTryNextBlock","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033","sourceMap":"9732:334:107:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033","sourceMap":"9732:334:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2024:220:86;;;;;;:::i;:::-;;:::i;:::-;;;612:14:122;;605:22;587:41;;575:2;560:18;2024:220:86;;;;;;;;947:634;;;;;;:::i;:::-;;:::i;:::-;;9801:263:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2024:220:86:-;2111:4;2134:59;;;2149:44;2134:59;;:103;;-1:-1:-1;2197:40:86;;;2212:25;2197:40;2134:103;2127:110;2024:220;-1:-1:-1;;2024:220:86:o;947:634::-;1233:36;1272:65;1290:5;1297:6;1305:3;1310:11;;1323:13;;1272:17;:65::i;:::-;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;6304:2;6281:26;;6274:46;;;;6377:2;6348:32;;1233:104:86;;-1:-1:-1;1439:5:86;:56;1433:142;;1551:12;;;;;;;;;;;;;;;;1519:45;;;;;;;1551:12;1519:45;;;:::i;:::-;;;;;;;;1433:142;1223:358;947:634;;;;;;;;;;:::o;9801:263:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10014:43:107;;;;10025:13;10014:43;:::i;:::-;10006:51;9801:263;-1:-1:-1;;;;;;;;9801:263:107:o;14:332:122:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:122:o;639:154::-;725:42;718:5;714:54;707:5;704:65;694:93;;783:1;780;773:12;694:93;639:154;:::o;798:134::-;866:20;;895:31;866:20;895:31;:::i;:::-;798:134;;;:::o;937:347::-;988:8;998:6;1052:3;1045:4;1037:6;1033:17;1029:27;1019:55;;1070:1;1067;1060:12;1019:55;-1:-1:-1;1093:20:122;;1136:18;1125:30;;1122:50;;;1168:1;1165;1158:12;1122:50;1205:4;1197:6;1193:17;1181:29;;1257:3;1250:4;1241:6;1233;1229:19;1225:30;1222:39;1219:59;;;1274:1;1271;1264:12;1219:59;937:347;;;;;:::o;1289:1400::-;1457:6;1465;1473;1481;1489;1497;1505;1513;1521;1529;1582:3;1570:9;1561:7;1557:23;1553:33;1550:53;;;1599:1;1596;1589:12;1550:53;1612:49;1650:9;1637:23;1612:49;:::i;:::-;1693:9;1680:23;1670:33;;1753:2;1742:9;1738:18;1725:32;1766:31;1791:5;1766:31;:::i;:::-;1816:5;-1:-1:-1;1868:2:122;1853:18;;1840:32;;-1:-1:-1;1919:2:122;1904:18;;1891:32;;-1:-1:-1;1970:3:122;1955:19;;1942:33;;-1:-1:-1;2026:3:122;2011:19;;1998:33;2050:18;2080:14;;;2077:34;;;2107:1;2104;2097:12;2077:34;2146:58;2196:7;2187:6;2176:9;2172:22;2146:58;:::i;:::-;2223:8;;-1:-1:-1;2120:84:122;-1:-1:-1;2311:3:122;2296:19;;2283:33;;-1:-1:-1;2328:16:122;;;2325:36;;;2357:1;2354;2347:12;2325:36;;2396:60;2448:7;2437:8;2426:9;2422:24;2396:60;:::i;:::-;2475:8;;-1:-1:-1;2370:86:122;-1:-1:-1;;2624:3:122;2530:23;;;2555:66;2526:96;2522:106;2519:126;;;2641:1;2638;2631:12;2519:126;2679:3;2668:9;2664:19;2654:29;;1289:1400;;;;;;;;;;;;;:::o;2694:1063::-;2811:6;2819;2827;2835;2843;2851;2859;2912:3;2900:9;2891:7;2887:23;2883:33;2880:53;;;2929:1;2926;2919:12;2880:53;2968:9;2955:23;2987:31;3012:5;2987:31;:::i;:::-;3037:5;-1:-1:-1;3094:2:122;3079:18;;3066:32;3107:33;3066:32;3107:33;:::i;:::-;3159:7;-1:-1:-1;3213:2:122;3198:18;;3185:32;;-1:-1:-1;3268:2:122;3253:18;;3240:32;3291:18;3321:14;;;3318:34;;;3348:1;3345;3338:12;3318:34;3387:58;3437:7;3428:6;3417:9;3413:22;3387:58;:::i;:::-;3464:8;;-1:-1:-1;3361:84:122;-1:-1:-1;3552:3:122;3537:19;;3524:33;;-1:-1:-1;3569:16:122;;;3566:36;;;3598:1;3595;3588:12;3566:36;;3637:60;3689:7;3678:8;3667:9;3663:24;3637:60;:::i;:::-;2694:1063;;;;-1:-1:-1;2694:1063:122;;-1:-1:-1;2694:1063:122;;;;3611:86;;-1:-1:-1;;;2694:1063:122:o;4001:1262::-;4219:13;;3847:42;3836:54;3824:67;;4179:3;4164:19;;4291:4;4283:6;4279:17;4273:24;4306:62;4362:4;4351:9;4347:20;4333:12;3847:42;3836:54;3824:67;;3762:135;4306:62;;4417:4;4409:6;4405:17;4399:24;4432:64;4490:4;4479:9;4475:20;4459:14;3847:42;3836:54;3824:67;;3762:135;4432:64;;4552:4;4544:6;4540:17;4534:24;4527:4;4516:9;4512:20;4505:54;4615:4;4607:6;4603:17;4597:24;4590:4;4579:9;4575:20;4568:54;4671:4;4663:6;4659:17;4653:24;4686:55;4735:4;4724:9;4720:20;4704:14;3978:10;3967:22;3955:35;;3902:94;4686:55;;4797:4;4789:6;4785:17;4779:24;4772:4;4761:9;4757:20;4750:54;4860:4;4852:6;4848:17;4842:24;4835:4;4824:9;4820:20;4813:54;4886:6;4946:2;4938:6;4934:15;4928:22;4923:2;4912:9;4908:18;4901:50;;4970:6;5025:2;5017:6;5013:15;5007:22;5038:51;5085:2;5074:9;5070:18;5054:14;421:13;414:21;402:34;;351:91;5038:51;-1:-1:-1;;5108:6:122;5156:15;;;5150:22;5130:18;;;5123:50;5192:6;5240:15;;;5234:22;5214:18;;;;5207:50;;;;4001:1262;:::o;5268:607::-;5380:4;5409:2;5438;5427:9;5420:21;5470:6;5464:13;5513:6;5508:2;5497:9;5493:18;5486:34;5538:1;5548:140;5562:6;5559:1;5556:13;5548:140;;;5657:14;;;5653:23;;5647:30;5623:17;;;5642:2;5619:26;5612:66;5577:10;;5548:140;;;5552:3;5737:1;5732:2;5723:6;5712:9;5708:22;5704:31;5697:42;5866:2;5796:66;5791:2;5783:6;5779:15;5775:88;5764:9;5760:104;5756:113;5748:121;;;;5268:607;;;;:::o;5880:401::-;5947:2;5941:9;5989:3;5977:16;;6023:18;6008:34;;6044:22;;;6005:62;6002:242;;;6100:77;6097:1;6090:88;6201:4;6198:1;6191:15;6229:4;6226:1;6219:15;6002:242;6260:2;6253:22;5880:401;:::o;6286:163::-;6353:20;;6413:10;6402:22;;6392:33;;6382:61;;6439:1;6436;6429:12;6454:160;6519:20;;6575:13;;6568:21;6558:32;;6548:60;;6604:1;6601;6594:12;6619:1108;6700:6;6753:3;6741:9;6732:7;6728:23;6724:33;6721:53;;;6770:1;6767;6760:12;6721:53;6796:17;;:::i;:::-;6836:29;6855:9;6836:29;:::i;:::-;6829:5;6822:44;6898:38;6932:2;6921:9;6917:18;6898:38;:::i;:::-;6893:2;6886:5;6882:14;6875:62;6969:38;7003:2;6992:9;6988:18;6969:38;:::i;:::-;6964:2;6957:5;6953:14;6946:62;7068:2;7057:9;7053:18;7040:32;7035:2;7028:5;7024:14;7017:56;7134:3;7123:9;7119:19;7106:33;7100:3;7093:5;7089:15;7082:58;7173:38;7206:3;7195:9;7191:19;7173:38;:::i;:::-;7167:3;7160:5;7156:15;7149:63;7273:3;7262:9;7258:19;7245:33;7239:3;7232:5;7228:15;7221:58;7340:3;7329:9;7325:19;7312:33;7306:3;7299:5;7295:15;7288:58;7365:3;7428:2;7417:9;7413:18;7400:32;7395:2;7388:5;7384:14;7377:56;;7452:3;7487:35;7518:2;7507:9;7503:18;7487:35;:::i;:::-;7471:14;;;7464:59;7542:3;7590:18;;;7577:32;7561:14;;;7554:56;7629:3;7677:18;;;7664:32;7648:14;;;7641:56;;;;-1:-1:-1;7475:5:122;6619:1108;-1:-1:-1;6619:1108:122:o","linkReferences":{}},"methodIdentifiers":{"getTradeableOrder(address,address,bytes32,bytes,bytes)":"b8296fc4","supportsInterface(bytes4)":"01ffc9a7","verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))":"14a2a784"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"OrderNotValid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollNever\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryAtBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryAtEpoch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"PollTryNextBlock\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainInput\",\"type\":\"bytes\"}],\"name\":\"getTradeableOrder\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"order\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"ctx\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainInput\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A conditional order handler used for testing that returns the GPv2Order passed in as `offchainInput`\",\"errors\":{\"OrderNotValid(string)\":[{\"details\":\"This error is returned by the `getTradeableOrder` function if the order condition is not met. A parameter of `string` type is included to allow the caller to specify the reason for the failure.\"}]},\"events\":{\"ConditionalOrderCreated(address,(address,bytes32,bytes))\":{\"details\":\"This event is emitted when a new conditional order is created.\",\"params\":{\"owner\":\"the address that has created the conditional order\",\"params\":\"the address / salt / data of the conditional order\"}}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))\":{\"details\":\"As an order generator, the `GPv2Order.Data` passed as a parameter is ignored / not validated.\",\"params\":{\"_hash\":\"the hash of the order\",\"ctx\":\"the context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet\",\"domainSeparator\":\"the domain separator used to sign the order\",\"offchainInput\":\"dynamic off-chain input for a discrete order cut from this conditional order\",\"order\":\"`GPv2Order.Data` of a discrete order to be verified (if *not* an `IConditionalOrderGenerator`).\",\"owner\":\"the contract who is the owner of the order\",\"sender\":\"the `msg.sender` of the transaction\",\"staticInput\":\"the static input for all discrete orders cut from this conditional order\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))\":{\"notice\":\"Verify if a given discrete order is valid.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.base.t.sol\":\"TestConditionalOrderGenerator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string"}],"type":"error","name":"OrderNotValid"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollNever"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryAtBlock"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryAtEpoch"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"PollTryNextBlock"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"offchainInput","type":"bytes"}],"stateMutability":"pure","type":"function","name":"getTradeableOrder","outputs":[{"internalType":"struct GPv2Order.Data","name":"order","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"bytes32","name":"ctx","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"},{"internalType":"bytes","name":"offchainInput","type":"bytes"},{"internalType":"struct GPv2Order.Data","name":"","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"verify"}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas."},"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))":{"details":"As an order generator, the `GPv2Order.Data` passed as a parameter is ignored / not validated.","params":{"_hash":"the hash of the order","ctx":"the context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet","domainSeparator":"the domain separator used to sign the order","offchainInput":"dynamic off-chain input for a discrete order cut from this conditional order","order":"`GPv2Order.Data` of a discrete order to be verified (if *not* an `IConditionalOrderGenerator`).","owner":"the contract who is the owner of the order","sender":"the `msg.sender` of the transaction","staticInput":"the static input for all discrete orders cut from this conditional order"}}},"version":1},"userdoc":{"kind":"user","methods":{"verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))":{"notice":"Verify if a given discrete order is valid."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.base.t.sol":"TestConditionalOrderGenerator"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/ComposableCoW.base.t.sol/TestContextSpecifyValue.json b/out/ComposableCoW.base.t.sol/TestContextSpecifyValue.json new file mode 100644 index 0000000..3d86786 --- /dev/null +++ b/out/ComposableCoW.base.t.sol/TestContextSpecifyValue.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getValue","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033","sourceMap":"8894:195:107:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033","sourceMap":"8894:195:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8950:137;;;;;;:::i;:::-;;:::i;:::-;;;756:25:122;;;744:2;729:18;8950:137:107;;;;;;;;9024:7;9050:30;;;;9061:7;9050:30;:::i;:::-;9043:37;8950:137;-1:-1:-1;;;8950:137:107:o;14:591:122:-;84:6;92;145:2;133:9;124:7;120:23;116:32;113:52;;;161:1;158;151:12;113:52;201:9;188:23;230:18;271:2;263:6;260:14;257:34;;;287:1;284;277:12;257:34;325:6;314:9;310:22;300:32;;370:7;363:4;359:2;355:13;351:27;341:55;;392:1;389;382:12;341:55;432:2;419:16;458:2;450:6;447:14;444:34;;;474:1;471;464:12;444:34;519:7;514:2;505:6;501:2;497:15;493:24;490:37;487:57;;;540:1;537;530:12;487:57;571:2;563:11;;;;;593:6;;-1:-1:-1;14:591:122;;-1:-1:-1;;;;14:591:122:o;792:180::-;851:6;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;-1:-1:-1;943:23:122;;792:180;-1:-1:-1;792:180:122:o","linkReferences":{}},"methodIdentifiers":{"getValue(bytes)":"b6576bdf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"getValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.base.t.sol\":\"TestContextSpecifyValue\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"getValue","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.base.t.sol":"TestContextSpecifyValue"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/ComposableCoW.base.t.sol/TestNonSafeWallet.json b/out/ComposableCoW.base.t.sol/TestNonSafeWallet.json new file mode 100644 index 0000000..15b27ba --- /dev/null +++ b/out/ComposableCoW.base.t.sol/TestNonSafeWallet.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"composableCow","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"composableCoW","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ComposableCoW"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"error","name":"InvalidHash","inputs":[]}],"bytecode":{"object":"0x60a060405234801561001057600080fd5b50604051610b98380380610b9883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b016100976000396000818160890152818160f101526102490152610b016000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631626ba7e1461003b5780638b0f483414610084575b600080fd5b61004e610049366004610449565b6100d0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ab7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007b565b6000806000838060200190518101906100e991906106ee565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e91906107e8565b90508561021084837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b14610247576040517f0af806e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166353f00b14303389856000801b8960405160200161029c9190610801565b604051602081830303815290604052896040516020016102bc9190610939565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016102ed9796959493929190610a17565b602060405180830381865afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190610a82565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561038a5761038a610338565b60405290565b604051610180810167ffffffffffffffff8111828210171561038a5761038a610338565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103fb576103fb610338565b604052919050565b600067ffffffffffffffff82111561041d5761041d610338565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561045c57600080fd5b82359150602083013567ffffffffffffffff81111561047a57600080fd5b8301601f8101851361048b57600080fd5b803561049e61049982610403565b6103b4565b8181528660208385010111156104b357600080fd5b816020840160208301376000602083830101528093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b8051610503816104d3565b919050565b805163ffffffff8116811461050357600080fd5b8051801515811461050357600080fd5b60005b8381101561054757818101518382015260200161052f565b50506000910152565b600082601f83011261056157600080fd5b815161056f61049982610403565b81815284602083860101111561058457600080fd5b61059582602083016020870161052c565b949350505050565b6000606082840312156105af57600080fd5b6105b7610367565b905081516105c4816104d3565b815260208281015190820152604082015167ffffffffffffffff8111156105ea57600080fd5b6105f684828501610550565b60408301525092915050565b60006060828403121561061457600080fd5b61061c610367565b9050815167ffffffffffffffff8082111561063657600080fd5b818401915084601f83011261064a57600080fd5b815160208282111561065e5761065e610338565b8160051b61066d8282016103b4565b928352848101820192828101908985111561068757600080fd5b958301955b848710156106a55786518252958301959083019061068c565b87525050858101519350828411156106bc57600080fd5b6106c88785880161059d565b908501525060408401519150808211156106e157600080fd5b506105f684828501610550565b6000808284036101a081121561070357600080fd5b6101808082121561071357600080fd5b61071b610390565b9150610726856104f8565b8252610734602086016104f8565b6020830152610745604086016104f8565b6040830152606085015160608301526080850151608083015261076a60a08601610508565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012061079d81870161051c565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156107d257600080fd5b6107de85828601610602565b9150509250929050565b6000602082840312156107fa57600080fd5b5051919050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610847602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161086f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161089b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108d08285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6000815180845261090781602086016020860161052c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b8083101561097e578351825292840192600192909201919084019061095e565b508387015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091508186820301604087015273ffffffffffffffffffffffffffffffffffffffff8351168152838301518482015260408301519350606060408201526109ef60608201856108ef565b935050604086015191508085840301606086015250610a0e82826108ef565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a0830152610a6260e08301856108ef565b82810360c0840152610a7481856108ef565b9a9950505050505050505050565b600060208284031215610a9457600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610ac457600080fd5b939250505056fea2646970667358221220a3f10e64462f999b7cb9a5828ea8e7a4173e75ba07dbbc1415b24cc0e08041d564736f6c63430008130033","sourceMap":"10132:139:107:-:0;;;10185:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;663:30:88;;;10132:139:107;;14:290:122;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:122;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:122:o;:::-;10132:139:107;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80631626ba7e1461003b5780638b0f483414610084575b600080fd5b61004e610049366004610449565b6100d0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ab7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007b565b6000806000838060200190518101906100e991906106ee565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e91906107e8565b90508561021084837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b14610247576040517f0af806e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166353f00b14303389856000801b8960405160200161029c9190610801565b604051602081830303815290604052896040516020016102bc9190610939565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016102ed9796959493929190610a17565b602060405180830381865afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190610a82565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561038a5761038a610338565b60405290565b604051610180810167ffffffffffffffff8111828210171561038a5761038a610338565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103fb576103fb610338565b604052919050565b600067ffffffffffffffff82111561041d5761041d610338565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561045c57600080fd5b82359150602083013567ffffffffffffffff81111561047a57600080fd5b8301601f8101851361048b57600080fd5b803561049e61049982610403565b6103b4565b8181528660208385010111156104b357600080fd5b816020840160208301376000602083830101528093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b8051610503816104d3565b919050565b805163ffffffff8116811461050357600080fd5b8051801515811461050357600080fd5b60005b8381101561054757818101518382015260200161052f565b50506000910152565b600082601f83011261056157600080fd5b815161056f61049982610403565b81815284602083860101111561058457600080fd5b61059582602083016020870161052c565b949350505050565b6000606082840312156105af57600080fd5b6105b7610367565b905081516105c4816104d3565b815260208281015190820152604082015167ffffffffffffffff8111156105ea57600080fd5b6105f684828501610550565b60408301525092915050565b60006060828403121561061457600080fd5b61061c610367565b9050815167ffffffffffffffff8082111561063657600080fd5b818401915084601f83011261064a57600080fd5b815160208282111561065e5761065e610338565b8160051b61066d8282016103b4565b928352848101820192828101908985111561068757600080fd5b958301955b848710156106a55786518252958301959083019061068c565b87525050858101519350828411156106bc57600080fd5b6106c88785880161059d565b908501525060408401519150808211156106e157600080fd5b506105f684828501610550565b6000808284036101a081121561070357600080fd5b6101808082121561071357600080fd5b61071b610390565b9150610726856104f8565b8252610734602086016104f8565b6020830152610745604086016104f8565b6040830152606085015160608301526080850151608083015261076a60a08601610508565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012061079d81870161051c565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156107d257600080fd5b6107de85828601610602565b9150509250929050565b6000602082840312156107fa57600080fd5b5051919050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610847602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161086f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161089b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108d08285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6000815180845261090781602086016020860161052c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b8083101561097e578351825292840192600192909201919084019061095e565b508387015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091508186820301604087015273ffffffffffffffffffffffffffffffffffffffff8351168152838301518482015260408301519350606060408201526109ef60608201856108ef565b935050604086015191508085840301606086015250610a0e82826108ef565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a0830152610a6260e08301856108ef565b82810360c0840152610a7481856108ef565b9a9950505050505050505050565b600060208284031215610a9457600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610ac457600080fd5b939250505056fea2646970667358221220a3f10e64462f999b7cb9a5828ea8e7a4173e75ba07dbbc1415b24cc0e08041d564736f6c63430008130033","sourceMap":"10132:139:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1038:875:88;;;;;;:::i;:::-;;:::i;:::-;;;2228:66:122;2216:79;;;2198:98;;2186:2;2171:18;1038:875:88;;;;;;;;560:44;;;;;;;;2653:42:122;2641:55;;;2623:74;;2611:2;2596:18;560:44:88;2454:249:122;1038:875:88;1133:6;1152:27;1181:42;1250:9;1239:68;;;;;;;;;;;;:::i;:::-;1151:156;;;;1317:23;1343:13;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1317:57;;1432:5;1390:38;1405:5;1412:15;5401:14:16;;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;1390:38:88;:47;1384:101;;1461:13;;;;;;;;;;;;;;1384:101;1502:13;:34;;;1571:4;1601:10;1635:5;1674:15;1746:1;1738:10;;1813:5;1802:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;1857:7;1846:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;1502:404;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1495:411;1038:875;-1:-1:-1;;;;;;1038:875:88:o;14:184:122:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:253;275:2;269:9;317:4;305:17;;352:18;337:34;;373:22;;;334:62;331:88;;;399:18;;:::i;:::-;435:2;428:22;203:253;:::o;461:255::-;533:2;527:9;575:6;563:19;;612:18;597:34;;633:22;;;594:62;591:88;;;659:18;;:::i;721:334::-;792:2;786:9;848:2;838:13;;853:66;834:86;822:99;;951:18;936:34;;972:22;;;933:62;930:88;;;998:18;;:::i;:::-;1034:2;1027:22;721:334;;-1:-1:-1;721:334:122:o;1060:245::-;1108:4;1141:18;1133:6;1130:30;1127:56;;;1163:18;;:::i;:::-;-1:-1:-1;1220:2:122;1208:15;1225:66;1204:88;1294:4;1200:99;;1060:245::o;1310:739::-;1387:6;1395;1448:2;1436:9;1427:7;1423:23;1419:32;1416:52;;;1464:1;1461;1454:12;1416:52;1500:9;1487:23;1477:33;;1561:2;1550:9;1546:18;1533:32;1588:18;1580:6;1577:30;1574:50;;;1620:1;1617;1610:12;1574:50;1643:22;;1696:4;1688:13;;1684:27;-1:-1:-1;1674:55:122;;1725:1;1722;1715:12;1674:55;1761:2;1748:16;1786:48;1802:31;1830:2;1802:31;:::i;:::-;1786:48;:::i;:::-;1857:2;1850:5;1843:17;1897:7;1892:2;1887;1883;1879:11;1875:20;1872:33;1869:53;;;1918:1;1915;1908:12;1869:53;1973:2;1968;1964;1960:11;1955:2;1948:5;1944:14;1931:45;2017:1;2012:2;2007;2000:5;1996:14;1992:23;1985:34;2038:5;2028:15;;;;;1310:739;;;;;:::o;2708:162::-;2802:42;2795:5;2791:54;2784:5;2781:65;2771:93;;2860:1;2857;2850:12;2771:93;2708:162;:::o;2875:154::-;2962:13;;2984:39;2962:13;2984:39;:::i;:::-;2875:154;;;:::o;3034:167::-;3112:13;;3165:10;3154:22;;3144:33;;3134:61;;3191:1;3188;3181:12;3206:164;3282:13;;3331;;3324:21;3314:32;;3304:60;;3360:1;3357;3350:12;3375:250;3460:1;3470:113;3484:6;3481:1;3478:13;3470:113;;;3560:11;;;3554:18;3541:11;;;3534:39;3506:2;3499:10;3470:113;;;-1:-1:-1;;3617:1:122;3599:16;;3592:27;3375:250::o;3630:441::-;3683:5;3736:3;3729:4;3721:6;3717:17;3713:27;3703:55;;3754:1;3751;3744:12;3703:55;3783:6;3777:13;3814:48;3830:31;3858:2;3830:31;:::i;3814:48::-;3887:2;3878:7;3871:19;3933:3;3926:4;3921:2;3913:6;3909:15;3905:26;3902:35;3899:55;;;3950:1;3947;3940:12;3899:55;3963:77;4037:2;4030:4;4021:7;4017:18;4010:4;4002:6;3998:17;3963:77;:::i;:::-;4058:7;3630:441;-1:-1:-1;;;;3630:441:122:o;4076:571::-;4156:5;4204:4;4192:9;4187:3;4183:19;4179:30;4176:50;;;4222:1;4219;4212:12;4176:50;4244:22;;:::i;:::-;4235:31;;4296:9;4290:16;4315:41;4348:7;4315:41;:::i;:::-;4365:22;;4440:2;4425:18;;;4419:25;4403:14;;;4396:49;4489:2;4474:18;;4468:25;4516:18;4505:30;;4502:50;;;4548:1;4545;4538:12;4502:50;4584:56;4636:3;4627:6;4616:9;4612:22;4584:56;:::i;:::-;4579:2;4572:5;4568:14;4561:80;;4076:571;;;;:::o;4652:1344::-;4723:5;4771:4;4759:9;4754:3;4750:19;4746:30;4743:50;;;4789:1;4786;4779:12;4743:50;4811:22;;:::i;:::-;4802:31;;4862:9;4856:16;4891:18;4932:2;4924:6;4921:14;4918:34;;;4948:1;4945;4938:12;4918:34;4986:6;4975:9;4971:22;4961:32;;5031:3;5024:4;5020:2;5016:13;5012:23;5002:51;;5049:1;5046;5039:12;5002:51;5078:2;5072:9;5100:4;5123:2;5119;5116:10;5113:36;;;5129:18;;:::i;:::-;5175:2;5172:1;5168:10;5198:28;5222:2;5218;5214:11;5198:28;:::i;:::-;5260:15;;;5330:11;;;5326:20;;;5291:12;;;;5358:15;;;5355:35;;;5386:1;5383;5376:12;5355:35;5410:11;;;;5430:135;5446:6;5441:3;5438:15;5430:135;;;5512:10;;5500:23;;5463:12;;;;5543;;;;5430:135;;;5574:20;;-1:-1:-1;;5625:18:122;;;5619:25;;-1:-1:-1;5656:16:122;;;5653:36;;;5685:1;5682;5675:12;5653:36;5721:82;5799:3;5788:8;5777:9;5773:24;5721:82;:::i;:::-;5705:14;;;5698:106;-1:-1:-1;5850:2:122;5835:18;;5829:25;;-1:-1:-1;5866:16:122;;;5863:36;;;5895:1;5892;5885:12;5863:36;;5931:58;5985:3;5974:8;5963:9;5959:24;5931:58;:::i;6001:1490::-;6134:6;6142;6186:9;6177:7;6173:23;6216:3;6212:2;6208:12;6205:32;;;6233:1;6230;6223:12;6205:32;6256:6;6282:2;6278;6274:11;6271:31;;;6298:1;6295;6288:12;6271:31;6324:22;;:::i;:::-;6311:35;;6369:48;6407:9;6369:48;:::i;:::-;6362:5;6355:63;6450:57;6503:2;6492:9;6488:18;6450:57;:::i;:::-;6445:2;6438:5;6434:14;6427:81;6540:57;6593:2;6582:9;6578:18;6540:57;:::i;:::-;6535:2;6528:5;6524:14;6517:81;6651:2;6640:9;6636:18;6630:25;6625:2;6618:5;6614:14;6607:49;6710:3;6699:9;6695:19;6689:26;6683:3;6676:5;6672:15;6665:51;6749:49;6793:3;6782:9;6778:19;6749:49;:::i;:::-;6743:3;6736:5;6732:15;6725:74;6853:3;6842:9;6838:19;6832:26;6826:3;6819:5;6815:15;6808:51;6913:3;6902:9;6898:19;6892:26;6886:3;6879:5;6875:15;6868:51;6938:3;6994:2;6983:9;6979:18;6973:25;6968:2;6961:5;6957:14;6950:49;;7018:3;7053:46;7095:2;7084:9;7080:18;7053:46;:::i;:::-;7037:14;;;7030:70;7119:3;7160:18;;;7154:25;7138:14;;;7131:49;7199:3;7240:18;;;7234:25;7218:14;;;7211:49;7313:18;;7307:25;7041:5;;-1:-1:-1;7355:18:122;7344:30;;7341:50;;;7387:1;7384;7377:12;7341:50;7410:75;7477:7;7468:6;7457:9;7453:22;7410:75;:::i;:::-;7400:85;;;6001:1490;;;;;:::o;7496:184::-;7566:6;7619:2;7607:9;7598:7;7594:23;7590:32;7587:52;;;7635:1;7632;7625:12;7587:52;-1:-1:-1;7658:16:122;;7496:184;-1:-1:-1;7496:184:122:o;7880:1283::-;8105:13;;2399:42;2388:54;2376:67;;8058:3;8043:19;;8177:4;8169:6;8165:17;8159:24;8192:69;8255:4;8244:9;8240:20;8226:12;2399:42;2388:54;2376:67;;2307:142;8192:69;;8310:4;8302:6;8298:17;8292:24;8325:71;8390:4;8379:9;8375:20;8359:14;2399:42;2388:54;2376:67;;2307:142;8325:71;;8452:4;8444:6;8440:17;8434:24;8427:4;8416:9;8412:20;8405:54;8515:4;8507:6;8503:17;8497:24;8490:4;8479:9;8475:20;8468:54;8571:4;8563:6;8559:17;8553:24;8586:55;8635:4;8624:9;8620:20;8604:14;7761:10;7750:22;7738:35;;7685:94;8586:55;;8697:4;8689:6;8685:17;8679:24;8672:4;8661:9;8657:20;8650:54;8760:4;8752:6;8748:17;8742:24;8735:4;8724:9;8720:20;8713:54;8786:6;8846:2;8838:6;8834:15;8828:22;8823:2;8812:9;8808:18;8801:50;;8870:6;8925:2;8917:6;8913:15;8907:22;8938:51;8985:2;8974:9;8970:18;8954:14;7854:13;7847:21;7835:34;;7784:91;8938:51;-1:-1:-1;;9008:6:122;9056:15;;;9050:22;9030:18;;;9023:50;9092:6;9140:15;;;9134:22;9114:18;;;;9107:50;;;;7880:1283;:::o;9168:329::-;9209:3;9247:5;9241:12;9274:6;9269:3;9262:19;9290:76;9359:6;9352:4;9347:3;9343:14;9336:4;9329:5;9325:16;9290:76;:::i;:::-;9411:2;9399:15;9416:66;9395:88;9386:98;;;;9486:4;9382:109;;9168:329;-1:-1:-1;;9168:329:122:o;9502:1417::-;9687:2;9698:21;;;9790:13;;9839:4;9819:18;;;9812:32;9893:19;;9757:3;9742:19;;9921:22;;;9658:4;;9687:2;10001:21;;;9658:4;;9974:3;9959:19;;;10050:169;10064:6;10061:1;10058:13;10050:169;;;10125:13;;10113:26;;10194:15;;;;10086:1;10079:9;;;;;10159:12;;;;10050:169;;;10054:3;10268:2;10260:6;10256:15;10250:22;10228:44;;10291:66;10281:76;;10418:2;10406:9;10401:3;10397:19;10393:28;10388:2;10377:9;10373:18;10366:56;10470:42;10453:14;10447:21;10443:70;10438:3;10431:83;10570:2;10554:14;10550:23;10544:30;10539:2;10534:3;10530:12;10523:52;10632:2;10616:14;10612:23;10606:30;10584:52;;10666:4;10661:2;10656:3;10652:12;10645:26;10691:48;10733:4;10728:3;10724:14;10708;10691:48;:::i;:::-;10680:59;;;10788:2;10780:6;10776:15;10770:22;10748:44;;10855:2;10843:9;10838:3;10834:19;10830:28;10823:4;10812:9;10808:20;10801:58;;10876:37;10909:3;10893:14;10876:37;:::i;:::-;10868:45;9502:1417;-1:-1:-1;;;;;9502:1417:122:o;10924:838::-;11242:4;11271:42;11352:2;11344:6;11340:15;11329:9;11322:34;11404:2;11396:6;11392:15;11387:2;11376:9;11372:18;11365:43;;11444:6;11439:2;11428:9;11424:18;11417:34;11487:6;11482:2;11471:9;11467:18;11460:34;11531:6;11525:3;11514:9;11510:19;11503:35;11575:3;11569;11558:9;11554:19;11547:32;11602:45;11642:3;11631:9;11627:19;11619:6;11602:45;:::i;:::-;11696:9;11688:6;11684:22;11678:3;11667:9;11663:19;11656:51;11724:32;11749:6;11741;11724:32;:::i;:::-;11716:40;10924:838;-1:-1:-1;;;;;;;;;;10924:838:122:o;11767:336::-;11836:6;11889:2;11877:9;11868:7;11864:23;11860:32;11857:52;;;11905:1;11902;11895:12;11857:52;11937:9;11931:16;11987:66;11980:5;11976:78;11969:5;11966:89;11956:117;;12069:1;12066;12059:12;11956:117;12092:5;11767:336;-1:-1:-1;;;11767:336:122:o","linkReferences":{},"immutableReferences":{"41645":[{"start":137,"length":32},{"start":241,"length":32},{"start":585,"length":32}]}},"methodIdentifiers":{"composableCoW()":"8b0f4834","isValidSignature(bytes32,bytes)":"1626ba7e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"composableCow\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"composableCoW\",\"outputs\":[{\"internalType\":\"contract ComposableCoW\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Stub ERC1271Forwarder that forwards to a ComposableCoW\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"GPv2Order.Data digest\",\"signature\":\"The abi.encoded tuple of (GPv2Order.Data, ComposableCoW.PayloadStruct)\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Re-arrange the request into something that ComposableCoW can understand\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.base.t.sol\":\"TestNonSafeWallet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"composableCow","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"composableCoW","outputs":[{"internalType":"contract ComposableCoW","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"isValidSignature(bytes32,bytes)":{"params":{"_hash":"GPv2Order.Data digest","signature":"The abi.encoded tuple of (GPv2Order.Data, ComposableCoW.PayloadStruct)"}}},"version":1},"userdoc":{"kind":"user","methods":{"isValidSignature(bytes32,bytes)":{"notice":"Re-arrange the request into something that ComposableCoW can understand"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.base.t.sol":"TestNonSafeWallet"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/ComposableCoW.base.t.sol/TestSwapGuard.json b/out/ComposableCoW.base.t.sol/TestSwapGuard.json new file mode 100644 index 0000000..5a8516a --- /dev/null +++ b/out/ComposableCoW.base.t.sol/TestSwapGuard.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_divisor","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verify","inputs":[{"name":"order","type":"tuple","internalType":"struct GPv2Order.Data","components":[{"name":"sellToken","type":"address","internalType":"contract IERC20"},{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"kind","type":"bytes32","internalType":"bytes32"},{"name":"partiallyFillable","type":"bool","internalType":"bool"},{"name":"sellTokenBalance","type":"bytes32","internalType":"bytes32"},{"name":"buyTokenBalance","type":"bytes32","internalType":"bytes32"}]},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"tuple","internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5060405161030638038061030683398101604081905261002f91610037565b600055610050565b60006020828403121561004957600080fd5b5051919050565b6102a78061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e61004936600461012b565b610075565b604051901515815260200160405180910390f35b61004e610070366004610174565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054610120906060880135610236565b159695505050505050565b60006020828403121561013d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461016d57600080fd5b9392505050565b60008060008060008587036101e081121561018e57600080fd5b6101808082121561019e57600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101c357600080fd5b908701906060828a0312156101d757600080fd5b9093506101c087013590808211156101ee57600080fd5b818801915088601f83011261020257600080fd5b81358181111561021157600080fd5b89602082850101111561022357600080fd5b9699959850939650602001949392505050565b60008261026c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fea26469706673582212205dfaf57d0502300f4f46fee2111ad23463fa3ccb371e514ca536b55c2f60166364736f6c63430008130033","sourceMap":"9181:439:107:-:0;;;9257:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9297:7;:18;9181:439;;14:184:122;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:122;;14:184;-1:-1:-1;14:184:122:o;:::-;9181:439:107;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e61004936600461012b565b610075565b604051901515815260200160405180910390f35b61004e610070366004610174565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054610120906060880135610236565b159695505050505050565b60006020828403121561013d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461016d57600080fd5b9392505050565b60008060008060008587036101e081121561018e57600080fd5b6101808082121561019e57600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101c357600080fd5b908701906060828a0312156101d757600080fd5b9093506101c087013590808211156101ee57600080fd5b818801915088601f83011261020257600080fd5b81358181111561021157600080fd5b89602082850101111561022357600080fd5b9699959850939650602001949392505050565b60008261026c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fea26469706673582212205dfaf57d0502300f4f46fee2111ad23463fa3ccb371e514ca536b55c2f60166364736f6c63430008130033","sourceMap":"9181:439:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:204:89;;;;;;:::i;:::-;;:::i;:::-;;;516:14:122;;509:22;491:41;;479:2;464:18;344:204:89;;;;;;;9373:245:107;;;;;;:::i;:::-;;:::i;344:204:89:-;431:4;454:43;;;469:28;454:43;;:87;;-1:-1:-1;501:40:89;;;516:25;501:40;454:87;447:94;344:204;-1:-1:-1;;344:204:89:o;9373:245:107:-;9557:4;9599:7;;9580:26;;:16;;;;:26;:::i;:::-;:31;;9373:245;-1:-1:-1;;;;;;9373:245:107:o;14:332:122:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:122:o;543:1107::-;707:6;715;723;731;739;783:9;774:7;770:23;813:3;809:2;805:12;802:32;;;830:1;827;820:12;802:32;853:3;876:2;872;868:11;865:31;;;892:1;889;882:12;865:31;915:9;;-1:-1:-1;956:18:122;;943:32;;-1:-1:-1;;1026:3:122;1011:19;;998:33;1050:18;1080:14;;;1077:34;;;1107:1;1104;1097:12;1077:34;1130:22;;;;1186:2;1168:16;;;1164:25;1161:45;;;1202:1;1199;1192:12;1161:45;1225:2;;-1:-1:-1;1280:3:122;1265:19;;1252:33;;1297:16;;;1294:36;;;1326:1;1323;1316:12;1294:36;1364:8;1353:9;1349:24;1339:34;;1411:7;1404:4;1400:2;1396:13;1392:27;1382:55;;1433:1;1430;1423:12;1382:55;1473:2;1460:16;1499:2;1491:6;1488:14;1485:34;;;1515:1;1512;1505:12;1485:34;1562:7;1555:4;1546:6;1542:2;1538:15;1534:26;1531:39;1528:59;;;1583:1;1580;1573:12;1528:59;543:1107;;;;-1:-1:-1;543:1107:122;;-1:-1:-1;1614:4:122;1606:13;;1638:6;543:1107;-1:-1:-1;;;543:1107:122:o;1655:266::-;1687:1;1713;1703:189;;1748:77;1745:1;1738:88;1849:4;1846:1;1839:15;1877:4;1874:1;1867:15;1703:189;-1:-1:-1;1906:9:122;;1655:266::o","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7","verify((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32),bytes32,(address,bytes32,bytes),bytes)":"f9ae35a2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_divisor\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"kind\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"partiallyFillable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"sellTokenBalance\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"buyTokenBalance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Order.Data\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A test swap guard that only allows amounts that are divisible by a given divisor\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.base.t.sol\":\"TestSwapGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_divisor","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct GPv2Order.Data","name":"order","type":"tuple","components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}]},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.base.t.sol":"TestSwapGuard"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/ComposableCoW.forwarder.t.sol/ComposableCoWForwarderTest.json b/out/ComposableCoW.forwarder.t.sol/ComposableCoWForwarderTest.json new file mode 100644 index 0000000..2db115b --- /dev/null +++ b/out/ComposableCoW.forwarder.t.sol/ComposableCoWForwarderTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_ERC1271Forwarder_isValidSignature_RevertsOnBadHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790553480156200002e57600080fd5b506040516200003d9062000389565b604051809103906000f0801580156200005a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055604051620000899062000397565b604051809103906000f080158015620000a6573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000d590620003a5565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012190620003b3565b604051809103906000f0801580156200013e573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200016d90620003c1565b604051809103906000f0801580156200018a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001b990620003cf565b604051809103906000f080158015620001d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020590620003dd565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f0801580156200025a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200028990620003dd565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002de573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200030d90620003dd565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000362573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003eb565b613dd180620114fe83390190565b61097980620152cf83390190565b6111688062015c4883390190565b6124eb8062016db083390190565b6102ec806201929b83390190565b610470806201958783390190565b610e1380620199f783390190565b6201110280620003fc6000396000f3fe60806040523480156200001157600080fd5b50600436106200028d5760003560e01c80639fbcc9ad116200015f578063cf06c7b711620000cc578063dfe274a91162000097578063e27d5153116200007a578063e27d51531462000542578063fa7626d41462000559578063fbfa77cf146200056757600080fd5b8063dfe274a91462000524578063e20c9f71146200053857600080fd5b8063cf06c7b714620004d8578063d21220a714620004ef578063dcd6f1071462000503578063dd1d2599146200050d57600080fd5b8063b716db66116200012a578063ba414fa6116200010d578063ba414fa614620004a6578063c45a015514620004b0578063c80916d414620004c457600080fd5b8063b716db661462000476578063b8616195146200048057600080fd5b80639fbcc9ad1462000430578063ad9b04751462000444578063b5508aa91462000458578063b62654fb146200046257600080fd5b80633e5e3c2311620001fe57806366d9a9a011620001c95780638406c07911620001ac5780638406c07914620003f957806385226c81146200040d578063916a17c6146200042657600080fd5b806366d9a9a014620003cc5780637d499aa414620003e557600080fd5b80633e5e3c23146200037c5780633f7286f4146200038657806351160630146200039057806358161a4214620003a457600080fd5b80631ed7831c116200025c578063294402cc116200023f578063294402cc14620003385780632e08d602146200034c578063329696ac146200037257600080fd5b80631ed7831c146200030b57806325be124e146200032457600080fd5b80630a9254e414620002925780630c8548f5146200029e5780630dfe168114620002cf578063151bcd2c14620002e3575b600080fd5b6200029c6200057b565b005b603354620002b2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620002b2906001600160a01b031681565b620002fa620002f4366004620053fb565b62000587565b604051620002c69392919062005469565b6200031562000644565b604051620002c69190620054d9565b602354620002b2906001600160a01b031681565b601f54620002b2906001600160a01b031681565b620003636200035d36600462005618565b620006a8565b604051908152602001620002c6565b6200029c62000784565b6200031562000890565b62000315620008f2565b602554620002b2906001600160a01b031681565b620003bb620003b536600462005659565b62000954565b6040519015158152602001620002c6565b620003d6620009a5565b604051620002c69190620056ad565b603254620002b2906001600160a01b031681565b602a54620002b2906001600160a01b031681565b6200041762000aad565b604051620002c691906200579a565b620003d662000b87565b601e54620002b2906001600160a01b031681565b603154620002b2906001600160a01b031681565b6200041762000c86565b601b54620002b2906001600160a01b031681565b6200029c62000d60565b62000497620004913660046200581e565b62000e9c565b604051620002c6919062005899565b620003bb62001074565b601c54620002b2906001600160a01b031681565b601d54620002b2906001600160a01b031681565b62000363620004e9366004620053fb565b620011c0565b602254620002b2906001600160a01b031681565b6200029c62001329565b620003636200051e366004620058ae565b620016a8565b602054620002b2906001600160a01b031681565b62000315620016d8565b6200036362000553366004620053fb565b6200173a565b600054620003bb9060ff1681565b602454620002b2906001600160a01b031681565b6200058562001767565b565b6039602052600090815260409020805460018201546002830180546001600160a01b03909316939192620005bb90620058d1565b80601f0160208091040260200160405190810160405280929190818152602001828054620005e990620058d1565b80156200063a5780601f106200060e576101008083540402835291602001916200063a565b820191906000526020600020905b8154815290600101906020018083116200061c57829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200069e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200067f575b5050505050905090565b6000600182511162000741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200075f57620007578262001ae7565b915062000741565b8160008151811062000775576200077562005926565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000585926001600160a01b03169163f698da259160048083019260209291908290030181865afa158015620007ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000810919062005955565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200088a919062005955565b62001c73565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200069e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200067f575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200069e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200067f575050505050905090565b81516000908290825b8181101562000999576200098e8387838151811062000980576200098062005926565b6020026020010151620016a8565b92506001016200095d565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000aa45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a8b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000a375790505b50505050508152505081526020019060010190620009c9565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000aa457838290600052602060002001805462000af390620058d1565b80601f016020809104026020016040519081016040528092919081815260200182805462000b2190620058d1565b801562000b725780601f1062000b465761010080835404028352916020019162000b72565b820191906000526020600020905b81548152906001019060200180831162000b5457829003601f168201915b50505050508152602001906001019062000ad1565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000aa45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c6d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000c195790505b5050505050815250508152602001906001019062000bab565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000aa457838290600052602060002001805462000ccc90620058d1565b80601f016020809104026020016040519081016040528092919081815260200182805462000cfa90620058d1565b801562000d4b5780601f1062000d1f5761010080835404028352916020019162000d4b565b820191906000526020600020905b81548152906001019060200180831162000d2d57829003601f168201915b50505050508152602001906001019062000caa565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000585946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562000ddc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e02919062005955565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562000e64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8a919062005985565b6034546001600160a01b031662001d89565b6060600183511162000f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000738565b600062000f3e8451620011c0565b67ffffffffffffffff81111562000f595762000f59620054ee565b60405190808252806020026020018201604052801562000f83578160200160208202803683370190505b50905060005b6001855111156200106a578360011660010362000fe75784600185038151811062000fb85762000fb862005926565b602002602001015182828151811062000fd55762000fd562005926565b6020026020010181815250506200104e565b845184600101036200100c576000801b82828151811062000fd55762000fd562005926565b84846001018151811062001024576200102462005926565b602002602001015182828151811062001041576200104162005926565b6020026020010181815250505b600101600284049350620010628562001ae7565b945062000f89565b5090505b92915050565b60008054610100900460ff1615620010955750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011bb5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200113d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620059a5565b60408051601f19818403018152908290526200115991620059ef565b6000604051808303816000865af19150503d806000811462001198576040519150601f19603f3d011682016040523d82523d6000602084013e6200119d565b606091505b5091505080806020019051810190620011b7919062005a1e565b9150505b919050565b600060018211620011d357506000919050565b60008270010000000000000000000000000000000081106200120457608093841c9362001201908362005a6b565b91505b6801000000000000000084106200122a57604093841c9362001227908362005a6b565b91505b64010000000084106200124c57602093841c9362001249908362005a6b565b91505b6201000084106200126c57601093841c9362001269908362005a6b565b91505b61010084106200128b57600893841c9362001288908362005a6b565b91505b60108410620012a957600493841c93620012a6908362005a6b565b91505b60048410620012c757600293841c93620012c4908362005a6b565b91505b60028410620012e057620012dd60018362005a6b565b91505b600081620012f18119600162005a6b565b1690508181148015620013045750600083115b15620013135750909392505050565b6200132083600162005a6b565b95945050505050565b6034546040516000916001600160a01b031690620013479062005356565b6001600160a01b039091168152602001604051809103906000f08015801562001374573d6000803e3d6000fd5b509050600062001400604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b9050620014108282600062001ea0565b60345460009081906001600160a01b03166326e0a19685856200143262002151565b60405160200162001444919062005a81565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16909152620014989392916024810162005b80565b600060405180830381865afa158015620014b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620014e0919081019062005c5d565b601f19820180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f9f24c52e0fcd1ac696d00405c3bd5adc558c48936919ac5ab3718fcb7d70f93f600282015260228101919091526042902091935091506000906040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0af806e0000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620015fa57600080fd5b505af11580156200160f573d6000803e3d6000fd5b50506040517f1626ba7e0000000000000000000000000000000000000000000000000000000081526001600160a01b0388169250631626ba7e91506200165c908490869060040162005d68565b602060405180830381865afa1580156200167a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016a0919062005d83565b505050505050565b60008183108015620016c2578360005282602052620016cb565b82600052836020525b5050604060002092915050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200069e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200067f575050505050905090565b6000808219600101831683145b83156200175f57600193841c93919091019062001747565b900392915050565b62001771620022d9565b6025546040516001600160a01b03909116906200178e9062005364565b6001600160a01b039091168152602001604051809103906000f080158015620017bb573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200194394938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa1580156200187c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a2919062005955565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200192c6200269e565b6031546001600160a01b0316949392919062002778565b604051620019519062005372565b604051809103906000f0801580156200196e573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620019b59062005380565b604051809103906000f080158015620019d2573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162001a19906200538e565b604051809103906000f08015801562001a36573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560345460405191169062001a7f906200539c565b6001600160a01b039091168152602001604051809103906000f08015801562001aac573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060806000835190508060011660010362001ba4576002810460010167ffffffffffffffff81111562001b1e5762001b1e620054ee565b60405190808252806020026020018201604052801562001b48578160200160208202803683370190505b50915062001b7984600183038151811062001b675762001b6762005926565b60200260200101516000801b620016a8565b8260018451038151811062001b925762001b9262005926565b60200260200101818152505062001bf1565b6002810467ffffffffffffffff81111562001bc35762001bc3620054ee565b60405190808252806020026020018201604052801562001bed578160200160208202803683370190505b5091505b6000805b6001830381101562001c695762001c3a86828151811062001c1a5762001c1a62005926565b602002602001015187836001018151811062000980576200098062005926565b84838151811062001c4f5762001c4f62005926565b602090810291909101015260019091019060020162001bf5565b5091949350505050565b80821462001d85577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d019060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162001d3a919062005dc7565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162001d73919062005e13565b60405180910390a162001d85620029ab565b5050565b806001600160a01b0316826001600160a01b03161462001d85577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001e299060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162001e62919062005e51565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162001d73919062005ea6565b905090565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f0f57600080fd5b505af115801562001f24573d6000803e3d6000fd5b50505050801562002008576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562001fab57600080fd5b505af115801562001fc0573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618360405162001fff919062005ee4565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062002055908590859060040162005ef9565b600060405180830381600087803b1580156200207057600080fd5b505af115801562002085573d6000803e3d6000fd5b50506034546040516200214c93506001600160a01b039091169150636108c532908690620020b890879060200162005ee4565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401620021009291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200211e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002144919062005a1e565b600162002af2565b505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915262001e9b7fdfe0aea12481b6861fe85f311f9e24a0b5f7886a445111af3b17dccfa27d99656040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b620022e362002ce6565b620023236040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062003149565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620023a69062003149565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620024299062003149565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462002488929182169116683635c9adc5dea00000620032cf565b602254602d54620024b0916001600160a01b039081169116683635c9adc5dea00000620032cf565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b031691839150600090620024f657620024f662005926565b6001600160a01b039283166020918202929092010152602d548251911690829060019081106200252a576200252a62005926565b6001600160a01b039283166020918202929092010152602f548251911690829060029081106200255e576200255e62005926565b6001600160a01b039283166020918202929092010152601c54601b54601e54620025989392831692918216918591600291166000620032de565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620025f09392831692918216918591600291166001620032de565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200264793928316929182169185916002911681620032de565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556021546031546200269b929182169116683635c9adc5dea00000620032cf565b50565b604080516002808252606082810190935260009190816020015b6040805180820190915260008082526020820152815260200190600190039081620026b857505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062002719576200271962005926565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062002762576200276262005926565b60200260200101819052506200106e81620033e2565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620027b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027df919062005955565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620028269a9998979695949392919062005f5b565b602060405180830381865afa15801562002844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200286a919062005955565b90506200287783620033e2565b9250606060005b8451811015620028f45781620028ba84878481518110620028a357620028a362005926565b60200260200101516200351b90919063ffffffff16565b604051602001620028cd92919062005fd2565b60405160208183030381529060405291508080620028eb9062006005565b9150506200287e565b50886001600160a01b0316636a7612028989898960008060008060008b604051602001620029239190620059ef565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620029599a9998979695949392919062006040565b6020604051808303816000875af115801562002979573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200299f919062005a1e565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002ac45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002a5f9291602001620059a5565b60408051601f198184030181529082905262002a7b91620059ef565b6000604051808303816000865af19150503d806000811462002aba576040519150601f19603f3d011682016040523d82523d6000602084013e62002abf565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b8015158215151462001d85577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b849060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262002bef576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002c26565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002c359190620060c7565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162002ca0576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002cd7565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162001d73919062006119565b62002d266040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062003149565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c76657200000000000000000000000000000000000000000000000000009181019190915262002da99062003149565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262002e2c9062003645565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062002e7590620053aa565b604051809103906000f08015801562002e92573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562002ef657600080fd5b505af115801562002f0b573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062002f2e90620053b8565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562002f62573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562002fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003015919062005985565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620030b357600080fd5b505af1158015620030c8573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200312d57600080fd5b505af115801562003142573d6000803e3d6000fd5b5050505050565b6040805180820190915260008082526020820152600082604051602001620031729190620059ef565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620031f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200321d919062005985565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062003274908490889060040162006157565b600060405180830381600087803b1580156200328f57600080fd5b505af1158015620032a4573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6200214c838383600062003659565b6000866001600160a01b0316631688f0b98763b63e800d60e01b888860008960008060006040516024016200331a97969594939291906200617b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200339192918790600401620061e5565b6020604051808303816000875af1158015620033b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033d7919062005985565b979650505050505050565b606060005b8251811015620035145760006200340082600162005a6b565b90505b8351811015620034fe5783818151811062003422576200342262005926565b6020026020010151600001516001600160a01b03168483815181106200344c576200344c62005926565b6020026020010151600001516001600160a01b03161115620034e95760008483815181106200347f576200347f62005926565b602002602001015190508482815181106200349e576200349e62005926565b6020026020010151858481518110620034bb57620034bb62005926565b602002602001018190525080858381518110620034dc57620034dc62005926565b6020026020010181905250505b80620034f58162006005565b91505062003403565b50806200350b8162006005565b915050620033e7565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa1580156200359c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035c2919062006219565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60006200365282620038f0565b5092915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790529151600092871691620036dd91620059ef565b6000604051808303816000865af19150503d80600081146200371c576040519150601f19603f3d011682016040523d82523d6000602084013e62003721565b606091505b509150506000818060200190518101906200373d919062005955565b905062003790846200378987620037827f70a08231000000000000000000000000000000000000000000000000000000006200377b60058d62003a3e565b9062003a7e565b9062003ab7565b9062003ae0565b8215620016a05760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b03891691620038099190620059ef565b6000604051808303816000865af19150503d806000811462003848576040519150601f19603f3d011682016040523d82523d6000602084013e6200384d565b606091505b5091505060008180602001905181019062003869919062005955565b905082861015620038945762003880868462006258565b6200388c908262006258565b9050620038af565b620038a0838762006258565b620038ac908262005a6b565b90505b620038e681620037897f18160ddd000000000000000000000000000000000000000000000000000000006200377b60058d62003a3e565b5050505050505050565b60008082604051602001620039069190620059ef565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562003988573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039ae919062005985565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062003a05908590879060040162006157565b600060405180830381600087803b15801562003a2057600080fd5b505af115801562003a35573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262003a77565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003a77565b62001d858282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562003b5957602002820191906000526020600020905b81548152602001906001019080831162003b44575b5050505050905060008362003b6e8362003fba565b60405160200162003b81929190620059a5565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a16835281529281209194509092909162003bed9186918891016200626e565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662003c285762003c268762004067565b505b6001600160a01b0385166000908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519091839162003c819187918991016200626e565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162003cc89190620059ef565b600060405180830381855afa9150503d806000811462003d05576040519150601f19603f3d011682016040523d82523d6000602084013e62003d0a565b606091505b50915062003d2790508162003d21886020620062aa565b62004074565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003da7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dcd919062005955565b905080821462003eac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000738565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562003f2957600080fd5b505af115801562003f3e573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562003fa660028b016000620053c6565b896004016000905550505050505050505050565b606060008251602062003fce9190620062aa565b67ffffffffffffffff81111562003fe95762003fe9620054ee565b6040519080825280601f01601f19166020018201604052801562004014576020820181803683370190505b50905060005b8351811015620036525760008482815181106200403b576200403b62005926565b6020026020010151905080826020026020018401525080806200405e9062006005565b9150506200401a565b60006200106e8262004116565b600080600060208551116200408b5784516200408e565b60205b905060005b818110156200410c57620040a9816008620062aa565b86620040b6838862005a6b565b81518110620040c957620040c962005926565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620041038162006005565b91505062004093565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200418857602002820191906000526020600020905b81548152602001906001019080831162004173575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905195965094919350620041ec925085918791016200626e565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620042a3576001600160a01b0384166000908152602087815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909291620042739185918791016200626e565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620042b18362005211565b604051602001620042c4929190620059a5565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200433457600080fd5b505af115801562004349573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200436a9190620059ef565b600060405180830381855afa9150503d8060008114620043a7576040519150601f19603f3d011682016040523d82523d6000602084013e620043ac565b606091505b509150620043c9905081620043c3876020620062aa565b620052be565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562004444573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200446e919081019062006326565b5090508051600103620048a05760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620044c657620044c662005926565b60200260200101516040518363ffffffff1660e01b8152600401620045009291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200451e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004544919062005955565b905080620045af577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062004584576200458462005926565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200468c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000738565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620046c49291906200626e565b6040516020818303038152906040528051906020012085600081518110620046f057620046f062005926565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062004762576200476262005926565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c1683528452808220905192939092620047c5918a918c91016200626e565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162004847918a918c91016200626e565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555062005009565b60018151111562004f7e5760005b815181101562004f775760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062004902576200490262005926565b60200260200101516040518363ffffffff1660e01b81526004016200493c9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200495a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004980919062005955565b905080620049ea577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620049bf57620049bf62005926565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062004a325762004a3262005926565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b15801562004ac257600080fd5b505af115801562004ad7573d6000803e3d6000fd5b50505050600060608a6001600160a01b03168760405162004af99190620059ef565b600060405180830381855afa9150503d806000811462004b36576040519150601f19603f3d011682016040523d82523d6000602084013e62004b3b565b606091505b50909250905062004b5381620043c38b6020620062aa565b955081801562004b8257507f133700000000000000000000000000000000000000000000000000000000000086145b1562004e8c577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162004bc09291906200626e565b6040516020818303038152906040528051906020012088888151811062004beb5762004beb62005926565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062004c5c5762004c5c62005926565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f168352845280822090519293909262004cbf918d918f91016200626e565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162004d769291906200626e565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062004df95762004df962005926565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562004e6a57600080fd5b505af115801562004e7f573d6000803e3d6000fd5b5050505050505062004f77565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062004ed45762004ed462005926565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562004f4557600080fd5b505af115801562004f5a573d6000803e3d6000fd5b50505050505050808062004f6e9062006005565b915050620048ae565b5062005009565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000738565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620050659188918a91016200626e565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200511c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000738565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200518060028a016000620053c6565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620051de9188918a91016200626e565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620052259190620062aa565b67ffffffffffffffff811115620052405762005240620054ee565b6040519080825280601f01601f1916602001820160405280156200526b576020820181803683370190505b50905060005b83518110156200365257600084828151811062005292576200529262005926565b602002602001015190508082602002602001840152508080620052b59062006005565b91505062005271565b60008060006020855111620052d5578451620052d8565b60205b905060005b818110156200410c57620052f3816008620062aa565b8662005300838862005a6b565b8151811062005313576200531362005926565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200534d8162006005565b915050620052dd565b610b98806200638883390190565b61237a8062006f2083390190565b61013c806200929a83390190565b61080980620093d683390190565b6102008062009bdf83390190565b6112468062009ddf83390190565b610d06806200b02583390190565b6153a2806200bd2b83390190565b50805460008255906000526020600020908101906200269b91905b80821115620053f75760008155600101620053e1565b5090565b6000602082840312156200540e57600080fd5b5035919050565b60005b838110156200543257818101518382015260200162005418565b50506000910152565b600081518084526200545581602086016020860162005415565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200132060608301846200543b565b600081518084526020808501945080840160005b83811015620054ce5781516001600160a01b031687529582019590820190600101620054a7565b509495945050505050565b60208152600062003a77602083018462005493565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620055445762005544620054ee565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715620055765762005576620054ee565b604052919050565b600067ffffffffffffffff8211156200559b576200559b620054ee565b5060051b60200190565b600082601f830112620055b757600080fd5b81356020620055d0620055ca836200557e565b6200554a565b82815260059290921b84018101918181019086841115620055f057600080fd5b8286015b848110156200560d5780358352918301918301620055f4565b509695505050505050565b6000602082840312156200562b57600080fd5b813567ffffffffffffffff8111156200564357600080fd5b6200565184828501620055a5565b949350505050565b6000806000606084860312156200566f57600080fd5b83359250602084013567ffffffffffffffff8111156200568e57600080fd5b6200569c86828701620055a5565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200578b578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620057755783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005731565b50978a01979550505091870191600101620056d5565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562005811577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452620057fe8583516200543b565b94509285019290850190600101620057c1565b5092979650505050505050565b600080604083850312156200583257600080fd5b823567ffffffffffffffff8111156200584a57600080fd5b6200585885828601620055a5565b95602094909401359450505050565b600081518084526020808501945080840160005b83811015620054ce578151875295820195908201906001016200587b565b60208152600062003a77602083018462005867565b60008060408385031215620058c257600080fd5b50508035926020909101359150565b600181811c90821680620058e657607f821691505b60208210810362005920577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156200596857600080fd5b5051919050565b6001600160a01b03811681146200269b57600080fd5b6000602082840312156200599857600080fd5b815162003a77816200596f565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620059e181600485016020870162005415565b919091016004019392505050565b6000825162005a0381846020870162005415565b9190910192915050565b80518015158114620011bb57600080fd5b60006020828403121562005a3157600080fd5b62003a778262005a0d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156200106e576200106e62005a3c565b81516001600160a01b031681526101808101602083015162005aae60208401826001600160a01b03169052565b50604083015162005aca60408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015162005af760a084018263ffffffff169052565b5060c083015160c083015260e083015160e08301526101008084015181840152506101208084015162005b2d8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200565160608501826200543b565b6001600160a01b038516815260806020820152600062005ba4608083018662005b4c565b828103604084015262005bb881866200543b565b90508281036060840152620033d7818562005867565b8051620011bb816200596f565b805163ffffffff81168114620011bb57600080fd5b600082601f83011262005c0257600080fd5b815167ffffffffffffffff81111562005c1f5762005c1f620054ee565b62005c346020601f19601f840116016200554a565b81815284602083860101111562005c4a57600080fd5b6200565182602083016020870162005415565b6000808284036101a081121562005c7357600080fd5b6101808082121562005c8457600080fd5b62005c8e6200551d565b915062005c9b8562005bce565b825262005cab6020860162005bce565b602083015262005cbe6040860162005bce565b6040830152606085015160608301526080850151608083015262005ce560a0860162005bdb565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012062005d1a81870162005a0d565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff81111562005d5057600080fd5b62005d5e8582860162005bf0565b9150509250929050565b8281526040602082015260006200565160408301846200543b565b60006020828403121562005d9657600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462003a7757600080fd5b60408152600062005e0560408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b60408152600062005e0560408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062005e8f60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062005e8f60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60208152600062003a77602083018462005b4c565b60408152600062005f0e604083018562005b4c565b905082151560208301529392505050565b6002811062005f57577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262005f878285018d6200543b565b925062005f98606085018c62005f1f565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b6000835162005fe681846020880162005415565b83519083019062005ffc81836020880162005415565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362006039576200603962005a3c565b5060010190565b60006101406001600160a01b03808e1684528c60208501528160408501526200606c8285018d6200543b565b91506200607d606085018c62005f1f565b8960808501528860a08501528760c085015280871660e085015280861661010085015250828103610120840152620060b681856200543b565b9d9c50505050505050505050505050565b6040815260006200610560408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200565181856200543b565b6040815260006200610560408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6001600160a01b03831681526040602082015260006200565160408301846200543b565b6000610100808352620061918184018b62005493565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200620960608301856200543b565b9050826040830152949350505050565b6000806000606084860312156200622f57600080fd5b835160ff811681146200624157600080fd5b602085015160409095015190969495509392505050565b818103818111156200106e576200106e62005a3c565b825160009082906020808701845b838110156200629a578151855293820193908201906001016200627c565b5050948252509092019392505050565b80820281158282048414176200106e576200106e62005a3c565b600082601f830112620062d657600080fd5b81516020620062e9620055ca836200557e565b82815260059290921b840181019181810190868411156200630957600080fd5b8286015b848110156200560d57805183529183019183016200630d565b600080604083850312156200633a57600080fd5b825167ffffffffffffffff808211156200635357600080fd5b6200636186838701620062c4565b935060208501519150808211156200637857600080fd5b5062005d5e85828601620062c456fe60a060405234801561001057600080fd5b50604051610b98380380610b9883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b016100976000396000818160890152818160f101526102490152610b016000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631626ba7e1461003b5780638b0f483414610084575b600080fd5b61004e610049366004610449565b6100d0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ab7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007b565b6000806000838060200190518101906100e991906106ee565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e91906107e8565b90508561021084837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b14610247576040517f0af806e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166353f00b14303389856000801b8960405160200161029c9190610801565b604051602081830303815290604052896040516020016102bc9190610939565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016102ed9796959493929190610a17565b602060405180830381865afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190610a82565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561038a5761038a610338565b60405290565b604051610180810167ffffffffffffffff8111828210171561038a5761038a610338565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103fb576103fb610338565b604052919050565b600067ffffffffffffffff82111561041d5761041d610338565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561045c57600080fd5b82359150602083013567ffffffffffffffff81111561047a57600080fd5b8301601f8101851361048b57600080fd5b803561049e61049982610403565b6103b4565b8181528660208385010111156104b357600080fd5b816020840160208301376000602083830101528093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b8051610503816104d3565b919050565b805163ffffffff8116811461050357600080fd5b8051801515811461050357600080fd5b60005b8381101561054757818101518382015260200161052f565b50506000910152565b600082601f83011261056157600080fd5b815161056f61049982610403565b81815284602083860101111561058457600080fd5b61059582602083016020870161052c565b949350505050565b6000606082840312156105af57600080fd5b6105b7610367565b905081516105c4816104d3565b815260208281015190820152604082015167ffffffffffffffff8111156105ea57600080fd5b6105f684828501610550565b60408301525092915050565b60006060828403121561061457600080fd5b61061c610367565b9050815167ffffffffffffffff8082111561063657600080fd5b818401915084601f83011261064a57600080fd5b815160208282111561065e5761065e610338565b8160051b61066d8282016103b4565b928352848101820192828101908985111561068757600080fd5b958301955b848710156106a55786518252958301959083019061068c565b87525050858101519350828411156106bc57600080fd5b6106c88785880161059d565b908501525060408401519150808211156106e157600080fd5b506105f684828501610550565b6000808284036101a081121561070357600080fd5b6101808082121561071357600080fd5b61071b610390565b9150610726856104f8565b8252610734602086016104f8565b6020830152610745604086016104f8565b6040830152606085015160608301526080850151608083015261076a60a08601610508565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012061079d81870161051c565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156107d257600080fd5b6107de85828601610602565b9150509250929050565b6000602082840312156107fa57600080fd5b5051919050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610847602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161086f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161089b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108d08285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6000815180845261090781602086016020860161052c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b8083101561097e578351825292840192600192909201919084019061095e565b508387015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091508186820301604087015273ffffffffffffffffffffffffffffffffffffffff8351168152838301518482015260408301519350606060408201526109ef60608201856108ef565b935050604086015191508085840301606086015250610a0e82826108ef565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a0830152610a6260e08301856108ef565b82810360c0840152610a7481856108ef565b9a9950505050505050505050565b600060208284031215610a9457600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610ac457600080fd5b939250505056fea2646970667358221220a3f10e64462f999b7cb9a5828ea8e7a4173e75ba07dbbc1415b24cc0e08041d564736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a26469706673582212204607b738708aabe84ee4e5babdb9a82085f0bdb75acc3474a749d198f0b3bf6164736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"225:1119:108:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:30;;;;;;;;;;;225:1119:108;;;;;;;;;;1168:10:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:116;:22;;-1:-1:-1;;;;;;1156:22:116;-1:-1:-1;;;;;1156:22:116;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:116;:32;;-1:-1:-1;;;;;;1188:32:116;-1:-1:-1;;;;;1188:32:116;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:116;:44;;-1:-1:-1;;;;;;1230:44:116;-1:-1:-1;;;;;1230:44:116;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:116;:42;;-1:-1:-1;;;;;;1323:42:116;-1:-1:-1;;;;;1323:42:116;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:116;:27;;-1:-1:-1;;;;;;1375:27:116;-1:-1:-1;;;;;1375:27:116;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:116;:37;;-1:-1:-1;;;;;;1412:37:116;-1:-1:-1;;;;;1412:37:116;;;;;;;;;;875:30:117;;;;;:::i;:::-;317:2:122;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:122;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:122;501:19;;494:33;559:3;544:19;875:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:117;:56;;-1:-1:-1;;;;;;851:56:117;-1:-1:-1;;;;;851:56:117;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:122;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:122;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:122;1061:19;;1054:33;1119:3;1104:19;941:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:117;:56;;-1:-1:-1;;;;;;917:56:117;-1:-1:-1;;;;;917:56:117;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:122;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:122;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:122;1621:19;;1614:33;1679:3;1664:19;1007:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:117;:56;;-1:-1:-1;;;;;;983:56:117;-1:-1:-1;;;;;983:56:117;;;;;;;;;;225:1119:108;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:122:-;225:1119:108;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b50600436106200028d5760003560e01c80639fbcc9ad116200015f578063cf06c7b711620000cc578063dfe274a91162000097578063e27d5153116200007a578063e27d51531462000542578063fa7626d41462000559578063fbfa77cf146200056757600080fd5b8063dfe274a91462000524578063e20c9f71146200053857600080fd5b8063cf06c7b714620004d8578063d21220a714620004ef578063dcd6f1071462000503578063dd1d2599146200050d57600080fd5b8063b716db66116200012a578063ba414fa6116200010d578063ba414fa614620004a6578063c45a015514620004b0578063c80916d414620004c457600080fd5b8063b716db661462000476578063b8616195146200048057600080fd5b80639fbcc9ad1462000430578063ad9b04751462000444578063b5508aa91462000458578063b62654fb146200046257600080fd5b80633e5e3c2311620001fe57806366d9a9a011620001c95780638406c07911620001ac5780638406c07914620003f957806385226c81146200040d578063916a17c6146200042657600080fd5b806366d9a9a014620003cc5780637d499aa414620003e557600080fd5b80633e5e3c23146200037c5780633f7286f4146200038657806351160630146200039057806358161a4214620003a457600080fd5b80631ed7831c116200025c578063294402cc116200023f578063294402cc14620003385780632e08d602146200034c578063329696ac146200037257600080fd5b80631ed7831c146200030b57806325be124e146200032457600080fd5b80630a9254e414620002925780630c8548f5146200029e5780630dfe168114620002cf578063151bcd2c14620002e3575b600080fd5b6200029c6200057b565b005b603354620002b2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620002b2906001600160a01b031681565b620002fa620002f4366004620053fb565b62000587565b604051620002c69392919062005469565b6200031562000644565b604051620002c69190620054d9565b602354620002b2906001600160a01b031681565b601f54620002b2906001600160a01b031681565b620003636200035d36600462005618565b620006a8565b604051908152602001620002c6565b6200029c62000784565b6200031562000890565b62000315620008f2565b602554620002b2906001600160a01b031681565b620003bb620003b536600462005659565b62000954565b6040519015158152602001620002c6565b620003d6620009a5565b604051620002c69190620056ad565b603254620002b2906001600160a01b031681565b602a54620002b2906001600160a01b031681565b6200041762000aad565b604051620002c691906200579a565b620003d662000b87565b601e54620002b2906001600160a01b031681565b603154620002b2906001600160a01b031681565b6200041762000c86565b601b54620002b2906001600160a01b031681565b6200029c62000d60565b62000497620004913660046200581e565b62000e9c565b604051620002c6919062005899565b620003bb62001074565b601c54620002b2906001600160a01b031681565b601d54620002b2906001600160a01b031681565b62000363620004e9366004620053fb565b620011c0565b602254620002b2906001600160a01b031681565b6200029c62001329565b620003636200051e366004620058ae565b620016a8565b602054620002b2906001600160a01b031681565b62000315620016d8565b6200036362000553366004620053fb565b6200173a565b600054620003bb9060ff1681565b602454620002b2906001600160a01b031681565b6200058562001767565b565b6039602052600090815260409020805460018201546002830180546001600160a01b03909316939192620005bb90620058d1565b80601f0160208091040260200160405190810160405280929190818152602001828054620005e990620058d1565b80156200063a5780601f106200060e576101008083540402835291602001916200063a565b820191906000526020600020905b8154815290600101906020018083116200061c57829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200069e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200067f575b5050505050905090565b6000600182511162000741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200075f57620007578262001ae7565b915062000741565b8160008151811062000775576200077562005926565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000585926001600160a01b03169163f698da259160048083019260209291908290030181865afa158015620007ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000810919062005955565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200088a919062005955565b62001c73565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200069e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200067f575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200069e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200067f575050505050905090565b81516000908290825b8181101562000999576200098e8387838151811062000980576200098062005926565b6020026020010151620016a8565b92506001016200095d565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000aa45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a8b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000a375790505b50505050508152505081526020019060010190620009c9565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000aa457838290600052602060002001805462000af390620058d1565b80601f016020809104026020016040519081016040528092919081815260200182805462000b2190620058d1565b801562000b725780601f1062000b465761010080835404028352916020019162000b72565b820191906000526020600020905b81548152906001019060200180831162000b5457829003601f168201915b50505050508152602001906001019062000ad1565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000aa45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c6d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000c195790505b5050505050815250508152602001906001019062000bab565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000aa457838290600052602060002001805462000ccc90620058d1565b80601f016020809104026020016040519081016040528092919081815260200182805462000cfa90620058d1565b801562000d4b5780601f1062000d1f5761010080835404028352916020019162000d4b565b820191906000526020600020905b81548152906001019060200180831162000d2d57829003601f168201915b50505050508152602001906001019062000caa565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000585946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562000ddc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e02919062005955565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562000e64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8a919062005985565b6034546001600160a01b031662001d89565b6060600183511162000f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000738565b600062000f3e8451620011c0565b67ffffffffffffffff81111562000f595762000f59620054ee565b60405190808252806020026020018201604052801562000f83578160200160208202803683370190505b50905060005b6001855111156200106a578360011660010362000fe75784600185038151811062000fb85762000fb862005926565b602002602001015182828151811062000fd55762000fd562005926565b6020026020010181815250506200104e565b845184600101036200100c576000801b82828151811062000fd55762000fd562005926565b84846001018151811062001024576200102462005926565b602002602001015182828151811062001041576200104162005926565b6020026020010181815250505b600101600284049350620010628562001ae7565b945062000f89565b5090505b92915050565b60008054610100900460ff1615620010955750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011bb5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916200113d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620059a5565b60408051601f19818403018152908290526200115991620059ef565b6000604051808303816000865af19150503d806000811462001198576040519150601f19603f3d011682016040523d82523d6000602084013e6200119d565b606091505b5091505080806020019051810190620011b7919062005a1e565b9150505b919050565b600060018211620011d357506000919050565b60008270010000000000000000000000000000000081106200120457608093841c9362001201908362005a6b565b91505b6801000000000000000084106200122a57604093841c9362001227908362005a6b565b91505b64010000000084106200124c57602093841c9362001249908362005a6b565b91505b6201000084106200126c57601093841c9362001269908362005a6b565b91505b61010084106200128b57600893841c9362001288908362005a6b565b91505b60108410620012a957600493841c93620012a6908362005a6b565b91505b60048410620012c757600293841c93620012c4908362005a6b565b91505b60028410620012e057620012dd60018362005a6b565b91505b600081620012f18119600162005a6b565b1690508181148015620013045750600083115b15620013135750909392505050565b6200132083600162005a6b565b95945050505050565b6034546040516000916001600160a01b031690620013479062005356565b6001600160a01b039091168152602001604051809103906000f08015801562001374573d6000803e3d6000fd5b509050600062001400604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b9050620014108282600062001ea0565b60345460009081906001600160a01b03166326e0a19685856200143262002151565b60405160200162001444919062005a81565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16909152620014989392916024810162005b80565b600060405180830381865afa158015620014b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620014e0919081019062005c5d565b601f19820180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f9f24c52e0fcd1ac696d00405c3bd5adc558c48936919ac5ab3718fcb7d70f93f600282015260228101919091526042902091935091506000906040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0af806e0000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620015fa57600080fd5b505af11580156200160f573d6000803e3d6000fd5b50506040517f1626ba7e0000000000000000000000000000000000000000000000000000000081526001600160a01b0388169250631626ba7e91506200165c908490869060040162005d68565b602060405180830381865afa1580156200167a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016a0919062005d83565b505050505050565b60008183108015620016c2578360005282602052620016cb565b82600052836020525b5050604060002092915050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200069e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200067f575050505050905090565b6000808219600101831683145b83156200175f57600193841c93919091019062001747565b900392915050565b62001771620022d9565b6025546040516001600160a01b03909116906200178e9062005364565b6001600160a01b039091168152602001604051809103906000f080158015620017bb573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200194394938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa1580156200187c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a2919062005955565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200192c6200269e565b6031546001600160a01b0316949392919062002778565b604051620019519062005372565b604051809103906000f0801580156200196e573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620019b59062005380565b604051809103906000f080158015620019d2573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162001a19906200538e565b604051809103906000f08015801562001a36573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560345460405191169062001a7f906200539c565b6001600160a01b039091168152602001604051809103906000f08015801562001aac573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060806000835190508060011660010362001ba4576002810460010167ffffffffffffffff81111562001b1e5762001b1e620054ee565b60405190808252806020026020018201604052801562001b48578160200160208202803683370190505b50915062001b7984600183038151811062001b675762001b6762005926565b60200260200101516000801b620016a8565b8260018451038151811062001b925762001b9262005926565b60200260200101818152505062001bf1565b6002810467ffffffffffffffff81111562001bc35762001bc3620054ee565b60405190808252806020026020018201604052801562001bed578160200160208202803683370190505b5091505b6000805b6001830381101562001c695762001c3a86828151811062001c1a5762001c1a62005926565b602002602001015187836001018151811062000980576200098062005926565b84838151811062001c4f5762001c4f62005926565b602090810291909101015260019091019060020162001bf5565b5091949350505050565b80821462001d85577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d019060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162001d3a919062005dc7565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162001d73919062005e13565b60405180910390a162001d85620029ab565b5050565b806001600160a01b0316826001600160a01b03161462001d85577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001e299060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162001e62919062005e51565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162001d73919062005ea6565b905090565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f0f57600080fd5b505af115801562001f24573d6000803e3d6000fd5b50505050801562002008576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562001fab57600080fd5b505af115801562001fc0573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618360405162001fff919062005ee4565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062002055908590859060040162005ef9565b600060405180830381600087803b1580156200207057600080fd5b505af115801562002085573d6000803e3d6000fd5b50506034546040516200214c93506001600160a01b039091169150636108c532908690620020b890879060200162005ee4565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401620021009291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200211e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002144919062005a1e565b600162002af2565b505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915262001e9b7fdfe0aea12481b6861fe85f311f9e24a0b5f7886a445111af3b17dccfa27d99656040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b620022e362002ce6565b620023236040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062003149565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620023a69062003149565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620024299062003149565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462002488929182169116683635c9adc5dea00000620032cf565b602254602d54620024b0916001600160a01b039081169116683635c9adc5dea00000620032cf565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b031691839150600090620024f657620024f662005926565b6001600160a01b039283166020918202929092010152602d548251911690829060019081106200252a576200252a62005926565b6001600160a01b039283166020918202929092010152602f548251911690829060029081106200255e576200255e62005926565b6001600160a01b039283166020918202929092010152601c54601b54601e54620025989392831692918216918591600291166000620032de565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620025f09392831692918216918591600291166001620032de565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200264793928316929182169185916002911681620032de565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556021546031546200269b929182169116683635c9adc5dea00000620032cf565b50565b604080516002808252606082810190935260009190816020015b6040805180820190915260008082526020820152815260200190600190039081620026b857505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062002719576200271962005926565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062002762576200276262005926565b60200260200101819052506200106e81620033e2565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620027b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027df919062005955565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620028269a9998979695949392919062005f5b565b602060405180830381865afa15801562002844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200286a919062005955565b90506200287783620033e2565b9250606060005b8451811015620028f45781620028ba84878481518110620028a357620028a362005926565b60200260200101516200351b90919063ffffffff16565b604051602001620028cd92919062005fd2565b60405160208183030381529060405291508080620028eb9062006005565b9150506200287e565b50886001600160a01b0316636a7612028989898960008060008060008b604051602001620029239190620059ef565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620029599a9998979695949392919062006040565b6020604051808303816000875af115801562002979573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200299f919062005a1e565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002ac45760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002a5f9291602001620059a5565b60408051601f198184030181529082905262002a7b91620059ef565b6000604051808303816000865af19150503d806000811462002aba576040519150601f19603f3d011682016040523d82523d6000602084013e62002abf565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b8015158215151462001d85577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b849060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262002bef576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002c26565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002c359190620060c7565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162002ca0576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002cd7565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162001d73919062006119565b62002d266040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062003149565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c76657200000000000000000000000000000000000000000000000000009181019190915262002da99062003149565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262002e2c9062003645565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062002e7590620053aa565b604051809103906000f08015801562002e92573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562002ef657600080fd5b505af115801562002f0b573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062002f2e90620053b8565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562002f62573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562002fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003015919062005985565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620030b357600080fd5b505af1158015620030c8573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200312d57600080fd5b505af115801562003142573d6000803e3d6000fd5b5050505050565b6040805180820190915260008082526020820152600082604051602001620031729190620059ef565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620031f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200321d919062005985565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062003274908490889060040162006157565b600060405180830381600087803b1580156200328f57600080fd5b505af1158015620032a4573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6200214c838383600062003659565b6000866001600160a01b0316631688f0b98763b63e800d60e01b888860008960008060006040516024016200331a97969594939291906200617b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200339192918790600401620061e5565b6020604051808303816000875af1158015620033b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033d7919062005985565b979650505050505050565b606060005b8251811015620035145760006200340082600162005a6b565b90505b8351811015620034fe5783818151811062003422576200342262005926565b6020026020010151600001516001600160a01b03168483815181106200344c576200344c62005926565b6020026020010151600001516001600160a01b03161115620034e95760008483815181106200347f576200347f62005926565b602002602001015190508482815181106200349e576200349e62005926565b6020026020010151858481518110620034bb57620034bb62005926565b602002602001018190525080858381518110620034dc57620034dc62005926565b6020026020010181905250505b80620034f58162006005565b91505062003403565b50806200350b8162006005565b915050620033e7565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa1580156200359c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035c2919062006219565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60006200365282620038f0565b5092915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790529151600092871691620036dd91620059ef565b6000604051808303816000865af19150503d80600081146200371c576040519150601f19603f3d011682016040523d82523d6000602084013e62003721565b606091505b509150506000818060200190518101906200373d919062005955565b905062003790846200378987620037827f70a08231000000000000000000000000000000000000000000000000000000006200377b60058d62003a3e565b9062003a7e565b9062003ab7565b9062003ae0565b8215620016a05760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b03891691620038099190620059ef565b6000604051808303816000865af19150503d806000811462003848576040519150601f19603f3d011682016040523d82523d6000602084013e6200384d565b606091505b5091505060008180602001905181019062003869919062005955565b905082861015620038945762003880868462006258565b6200388c908262006258565b9050620038af565b620038a0838762006258565b620038ac908262005a6b565b90505b620038e681620037897f18160ddd000000000000000000000000000000000000000000000000000000006200377b60058d62003a3e565b5050505050505050565b60008082604051602001620039069190620059ef565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562003988573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039ae919062005985565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062003a05908590879060040162006157565b600060405180830381600087803b15801562003a2057600080fd5b505af115801562003a35573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262003a77565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003a77565b62001d858282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562003b5957602002820191906000526020600020905b81548152602001906001019080831162003b44575b5050505050905060008362003b6e8362003fba565b60405160200162003b81929190620059a5565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a16835281529281209194509092909162003bed9186918891016200626e565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662003c285762003c268762004067565b505b6001600160a01b0385166000908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519091839162003c819187918991016200626e565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162003cc89190620059ef565b600060405180830381855afa9150503d806000811462003d05576040519150601f19603f3d011682016040523d82523d6000602084013e62003d0a565b606091505b50915062003d2790508162003d21886020620062aa565b62004074565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003da7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dcd919062005955565b905080821462003eac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000738565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562003f2957600080fd5b505af115801562003f3e573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562003fa660028b016000620053c6565b896004016000905550505050505050505050565b606060008251602062003fce9190620062aa565b67ffffffffffffffff81111562003fe95762003fe9620054ee565b6040519080825280601f01601f19166020018201604052801562004014576020820181803683370190505b50905060005b8351811015620036525760008482815181106200403b576200403b62005926565b6020026020010151905080826020026020018401525080806200405e9062006005565b9150506200401a565b60006200106e8262004116565b600080600060208551116200408b5784516200408e565b60205b905060005b818110156200410c57620040a9816008620062aa565b86620040b6838862005a6b565b81518110620040c957620040c962005926565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620041038162006005565b91505062004093565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200418857602002820191906000526020600020905b81548152602001906001019080831162004173575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905195965094919350620041ec925085918791016200626e565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620042a3576001600160a01b0384166000908152602087815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909291620042739185918791016200626e565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620042b18362005211565b604051602001620042c4929190620059a5565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200433457600080fd5b505af115801562004349573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200436a9190620059ef565b600060405180830381855afa9150503d8060008114620043a7576040519150601f19603f3d011682016040523d82523d6000602084013e620043ac565b606091505b509150620043c9905081620043c3876020620062aa565b620052be565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562004444573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200446e919081019062006326565b5090508051600103620048a05760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620044c657620044c662005926565b60200260200101516040518363ffffffff1660e01b8152600401620045009291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200451e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004544919062005955565b905080620045af577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062004584576200458462005926565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200468c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000738565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620046c49291906200626e565b6040516020818303038152906040528051906020012085600081518110620046f057620046f062005926565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062004762576200476262005926565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c1683528452808220905192939092620047c5918a918c91016200626e565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162004847918a918c91016200626e565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555062005009565b60018151111562004f7e5760005b815181101562004f775760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062004902576200490262005926565b60200260200101516040518363ffffffff1660e01b81526004016200493c9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200495a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004980919062005955565b905080620049ea577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620049bf57620049bf62005926565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062004a325762004a3262005926565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b15801562004ac257600080fd5b505af115801562004ad7573d6000803e3d6000fd5b50505050600060608a6001600160a01b03168760405162004af99190620059ef565b600060405180830381855afa9150503d806000811462004b36576040519150601f19603f3d011682016040523d82523d6000602084013e62004b3b565b606091505b50909250905062004b5381620043c38b6020620062aa565b955081801562004b8257507f133700000000000000000000000000000000000000000000000000000000000086145b1562004e8c577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162004bc09291906200626e565b6040516020818303038152906040528051906020012088888151811062004beb5762004beb62005926565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062004c5c5762004c5c62005926565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f168352845280822090519293909262004cbf918d918f91016200626e565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162004d769291906200626e565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062004df95762004df962005926565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562004e6a57600080fd5b505af115801562004e7f573d6000803e3d6000fd5b5050505050505062004f77565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062004ed45762004ed462005926565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562004f4557600080fd5b505af115801562004f5a573d6000803e3d6000fd5b50505050505050808062004f6e9062006005565b915050620048ae565b5062005009565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000738565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620050659188918a91016200626e565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200511c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000738565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200518060028a016000620053c6565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620051de9188918a91016200626e565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620052259190620062aa565b67ffffffffffffffff811115620052405762005240620054ee565b6040519080825280601f01601f1916602001820160405280156200526b576020820181803683370190505b50905060005b83518110156200365257600084828151811062005292576200529262005926565b602002602001015190508082602002602001840152508080620052b59062006005565b91505062005271565b60008060006020855111620052d5578451620052d8565b60205b905060005b818110156200410c57620052f3816008620062aa565b8662005300838862005a6b565b8151811062005313576200531362005926565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200534d8162006005565b915050620052dd565b610b98806200638883390190565b61237a8062006f2083390190565b61013c806200929a83390190565b61080980620093d683390190565b6102008062009bdf83390190565b6112468062009ddf83390190565b610d06806200b02583390190565b6153a2806200bd2b83390190565b50805460008255906000526020600020908101906200269b91905b80821115620053f75760008155600101620053e1565b5090565b6000602082840312156200540e57600080fd5b5035919050565b60005b838110156200543257818101518382015260200162005418565b50506000910152565b600081518084526200545581602086016020860162005415565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200132060608301846200543b565b600081518084526020808501945080840160005b83811015620054ce5781516001600160a01b031687529582019590820190600101620054a7565b509495945050505050565b60208152600062003a77602083018462005493565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620055445762005544620054ee565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715620055765762005576620054ee565b604052919050565b600067ffffffffffffffff8211156200559b576200559b620054ee565b5060051b60200190565b600082601f830112620055b757600080fd5b81356020620055d0620055ca836200557e565b6200554a565b82815260059290921b84018101918181019086841115620055f057600080fd5b8286015b848110156200560d5780358352918301918301620055f4565b509695505050505050565b6000602082840312156200562b57600080fd5b813567ffffffffffffffff8111156200564357600080fd5b6200565184828501620055a5565b949350505050565b6000806000606084860312156200566f57600080fd5b83359250602084013567ffffffffffffffff8111156200568e57600080fd5b6200569c86828701620055a5565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200578b578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620057755783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005731565b50978a01979550505091870191600101620056d5565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562005811577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452620057fe8583516200543b565b94509285019290850190600101620057c1565b5092979650505050505050565b600080604083850312156200583257600080fd5b823567ffffffffffffffff8111156200584a57600080fd5b6200585885828601620055a5565b95602094909401359450505050565b600081518084526020808501945080840160005b83811015620054ce578151875295820195908201906001016200587b565b60208152600062003a77602083018462005867565b60008060408385031215620058c257600080fd5b50508035926020909101359150565b600181811c90821680620058e657607f821691505b60208210810362005920577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156200596857600080fd5b5051919050565b6001600160a01b03811681146200269b57600080fd5b6000602082840312156200599857600080fd5b815162003a77816200596f565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620059e181600485016020870162005415565b919091016004019392505050565b6000825162005a0381846020870162005415565b9190910192915050565b80518015158114620011bb57600080fd5b60006020828403121562005a3157600080fd5b62003a778262005a0d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156200106e576200106e62005a3c565b81516001600160a01b031681526101808101602083015162005aae60208401826001600160a01b03169052565b50604083015162005aca60408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015162005af760a084018263ffffffff169052565b5060c083015160c083015260e083015160e08301526101008084015181840152506101208084015162005b2d8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200565160608501826200543b565b6001600160a01b038516815260806020820152600062005ba4608083018662005b4c565b828103604084015262005bb881866200543b565b90508281036060840152620033d7818562005867565b8051620011bb816200596f565b805163ffffffff81168114620011bb57600080fd5b600082601f83011262005c0257600080fd5b815167ffffffffffffffff81111562005c1f5762005c1f620054ee565b62005c346020601f19601f840116016200554a565b81815284602083860101111562005c4a57600080fd5b6200565182602083016020870162005415565b6000808284036101a081121562005c7357600080fd5b6101808082121562005c8457600080fd5b62005c8e6200551d565b915062005c9b8562005bce565b825262005cab6020860162005bce565b602083015262005cbe6040860162005bce565b6040830152606085015160608301526080850151608083015262005ce560a0860162005bdb565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012062005d1a81870162005a0d565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff81111562005d5057600080fd5b62005d5e8582860162005bf0565b9150509250929050565b8281526040602082015260006200565160408301846200543b565b60006020828403121562005d9657600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462003a7757600080fd5b60408152600062005e0560408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b60408152600062005e0560408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062005e8f60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062005e8f60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60208152600062003a77602083018462005b4c565b60408152600062005f0e604083018562005b4c565b905082151560208301529392505050565b6002811062005f57577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262005f878285018d6200543b565b925062005f98606085018c62005f1f565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b6000835162005fe681846020880162005415565b83519083019062005ffc81836020880162005415565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362006039576200603962005a3c565b5060010190565b60006101406001600160a01b03808e1684528c60208501528160408501526200606c8285018d6200543b565b91506200607d606085018c62005f1f565b8960808501528860a08501528760c085015280871660e085015280861661010085015250828103610120840152620060b681856200543b565b9d9c50505050505050505050505050565b6040815260006200610560408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200565181856200543b565b6040815260006200610560408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6001600160a01b03831681526040602082015260006200565160408301846200543b565b6000610100808352620061918184018b62005493565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200620960608301856200543b565b9050826040830152949350505050565b6000806000606084860312156200622f57600080fd5b835160ff811681146200624157600080fd5b602085015160409095015190969495509392505050565b818103818111156200106e576200106e62005a3c565b825160009082906020808701845b838110156200629a578151855293820193908201906001016200627c565b5050948252509092019392505050565b80820281158282048414176200106e576200106e62005a3c565b600082601f830112620062d657600080fd5b81516020620062e9620055ca836200557e565b82815260059290921b840181019181810190868411156200630957600080fd5b8286015b848110156200560d57805183529183019183016200630d565b600080604083850312156200633a57600080fd5b825167ffffffffffffffff808211156200635357600080fd5b6200636186838701620062c4565b935060208501519150808211156200637857600080fd5b5062005d5e85828601620062c456fe60a060405234801561001057600080fd5b50604051610b98380380610b9883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b016100976000396000818160890152818160f101526102490152610b016000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631626ba7e1461003b5780638b0f483414610084575b600080fd5b61004e610049366004610449565b6100d0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ab7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007b565b6000806000838060200190518101906100e991906106ee565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e91906107e8565b90508561021084837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b14610247576040517f0af806e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166353f00b14303389856000801b8960405160200161029c9190610801565b604051602081830303815290604052896040516020016102bc9190610939565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016102ed9796959493929190610a17565b602060405180830381865afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190610a82565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561038a5761038a610338565b60405290565b604051610180810167ffffffffffffffff8111828210171561038a5761038a610338565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103fb576103fb610338565b604052919050565b600067ffffffffffffffff82111561041d5761041d610338565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561045c57600080fd5b82359150602083013567ffffffffffffffff81111561047a57600080fd5b8301601f8101851361048b57600080fd5b803561049e61049982610403565b6103b4565b8181528660208385010111156104b357600080fd5b816020840160208301376000602083830101528093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b8051610503816104d3565b919050565b805163ffffffff8116811461050357600080fd5b8051801515811461050357600080fd5b60005b8381101561054757818101518382015260200161052f565b50506000910152565b600082601f83011261056157600080fd5b815161056f61049982610403565b81815284602083860101111561058457600080fd5b61059582602083016020870161052c565b949350505050565b6000606082840312156105af57600080fd5b6105b7610367565b905081516105c4816104d3565b815260208281015190820152604082015167ffffffffffffffff8111156105ea57600080fd5b6105f684828501610550565b60408301525092915050565b60006060828403121561061457600080fd5b61061c610367565b9050815167ffffffffffffffff8082111561063657600080fd5b818401915084601f83011261064a57600080fd5b815160208282111561065e5761065e610338565b8160051b61066d8282016103b4565b928352848101820192828101908985111561068757600080fd5b958301955b848710156106a55786518252958301959083019061068c565b87525050858101519350828411156106bc57600080fd5b6106c88785880161059d565b908501525060408401519150808211156106e157600080fd5b506105f684828501610550565b6000808284036101a081121561070357600080fd5b6101808082121561071357600080fd5b61071b610390565b9150610726856104f8565b8252610734602086016104f8565b6020830152610745604086016104f8565b6040830152606085015160608301526080850151608083015261076a60a08601610508565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012061079d81870161051c565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156107d257600080fd5b6107de85828601610602565b9150509250929050565b6000602082840312156107fa57600080fd5b5051919050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610847602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161086f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161089b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108d08285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6000815180845261090781602086016020860161052c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b8083101561097e578351825292840192600192909201919084019061095e565b508387015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091508186820301604087015273ffffffffffffffffffffffffffffffffffffffff8351168152838301518482015260408301519350606060408201526109ef60608201856108ef565b935050604086015191508085840301606086015250610a0e82826108ef565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a0830152610a6260e08301856108ef565b82810360c0840152610a7481856108ef565b9a9950505050505050505050565b600060208284031215610a9457600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610ac457600080fd5b939250505056fea2646970667358221220a3f10e64462f999b7cb9a5828ea8e7a4173e75ba07dbbc1415b24cc0e08041d564736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a26469706673582212204607b738708aabe84ee4e5babdb9a82085f0bdb75acc3474a749d198f0b3bf6164736f6c63430008130033","sourceMap":"225:1119:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;292:116;;;:::i;:::-;;595:17:106;;;;;-1:-1:-1;;;;;595:17:106;;;;;;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;595:17:106;;;;;;;;748:20:117;;;;;-1:-1:-1;;;;;748:20:117;;;1586:74:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2161:134:33:-;;;:::i;:::-;;;;;;;:::i;800:20:117:-;;;;;-1:-1:-1;;;;;800:20:117;;;1025:26:116;;;;;-1:-1:-1;;;;;1025:26:116;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;5012:25:122;;;5000:2;4985:18;987:253:45;4866:177:122;3024:158:107;;;:::i;2930:133:33:-;;;:::i;2631:141::-;;;:::i;1125:32:115:-;;;;;-1:-1:-1;;;;;1125:32:115;;;452:451:45;;;;;;:::i;:::-;;:::i;:::-;;;6060:14:122;;6053:22;6035:41;;6023:2;6008:18;452:451:45;5895:187:122;2447:178:33;;;:::i;:::-;;;;;;;:::i;572:17:106:-;;;;;-1:-1:-1;;;;;572:17:106;;;1232:22:115;;;;;-1:-1:-1;;;;;1232:22:115;;;2301:140:33;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;978:41:116:-;;;;;-1:-1:-1;;;;;978:41:116;;;549:17:106;;;;;-1:-1:-1;;;;;549:17:106;;;1866:141:33;;;:::i;865:21:116:-;;;;;-1:-1:-1;;;;;865:21:116;;;2744:190:107;;;:::i;1246:1168:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;892:31:116:-;;;;;-1:-1:-1;;;;;892:31:116;;;929:43;;;;;-1:-1:-1;;;;;929:43:116;;;5179:952:45;;;;;;:::i;:::-;;:::i;774:20:117:-;;;;;-1:-1:-1;;;;;774:20:117;;;477:865:108;;;:::i;407:409:44:-;;;;;;:::i;:::-;;:::i;1057:36:116:-;;;;;-1:-1:-1;;;;;1057:36:116;;;2013:142:33;;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;1572:26:26:-;;;;;;;;;1100:19:115;;;;;-1:-1:-1;;;;;1100:19:115;;;292:116:108;388:13;:11;:13::i;:::-;292:116::o;1586:74:107:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:134:33:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:33;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;987:253:45:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;12570:2:122;1067:63:45;;;12552:21:122;12609:2;12589:18;;;12582:30;12648:34;12628:18;;;12621:62;12719:5;12699:18;;;12692:33;12742:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:107:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:107;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:107;-1:-1:-1;;;;;3146:26:107;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;2930:133:33:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:33;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:33;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;452:451:45:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;;452:451;-1:-1:-1;;;452:451:45:o;2447:178:33:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:107;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:107;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;13364:55:122;;;2840:61:107;;;13346:74:122;13436:18;;;13429:34;13319:18;;2840:61:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:107;2823:8;:104::i;1246:1168:45:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;14171:2:122;1350:64:45;;;14153:21:122;14210:2;14190:18;;;14183:30;14249:34;14229:18;;;14222:62;14320:6;14300:18;;;14293:34;14344:19;;1350:64:45;13969:400:122;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;13346:74:122;;;2221:17:26;13436:18:122;;;13429:34;2196:43:26;;;;;;;;;13319:18:122;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;5179:952:45:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;477:865:108:-;619:13;;589:45;;561:25;;-1:-1:-1;;;;;619:13:108;;589:45;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;589:45:108;;;;;;;;;;;;;;;;;;;;;;;561:73;;644:54;701:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:107;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:107;;;;;;;-1:-1:-1;;;;;7569:11:107;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;701:21:108;644:78;;773:40;789:7;799:6;807:5;773:7;:40::i;:::-;933:13;;878:27;;;;-1:-1:-1;;;;;933:13:108;:44;999:7;1009:6;1028:15;:13;:15::i;:::-;1017:27;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1017:27:108;;;;;;1060:1;1046:16;;;;;;;;;933:139;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;933:139:108;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5401:14:16;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;1125:21:108;6241:1:16;6218:25;;6211:50;6304:2;6281:26;;6274:46;;;;6377:2;6348:32;;877:195:108;;-1:-1:-1;877:195:108;-1:-1:-1;1083:17:108;;1225:54;;;;;1241:37;1225:54;;;21339:98:122;1083:64:108;;-1:-1:-1;1225:15:108;;;;21312:18:122;;1225:54:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1289:46:108;;;;;-1:-1:-1;;;;;1289:24:108;;;-1:-1:-1;1289:24:108;;-1:-1:-1;1289:46:108;;1314:9;;1325;;1289:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;551:791;;;;;477:865::o;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;2013:142:33:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:33;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;1667:955:107:-;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:107;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;1819:38:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:107;:54;;;;-1:-1:-1;;;;;1803:54:107;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:107;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;22256:25:122;;;;-1:-1:-1;;;;;2216:13:107;22297:18:122;;;22290:83;22229:18;;2101:143:107;;;-1:-1:-1;;2101:143:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:107;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:107;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:107;:48;;;;-1:-1:-1;;;;;2366:48:107;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:107;:49;;;;-1:-1:-1;;;;;2478:49:107;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:107;:37;;;;-1:-1:-1;;;;;2537:37:107;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;2592:23:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:107;:30;;;;-1:-1:-1;;;;;2585:30:107;;;;;;;;;;1667:955::o;2493:990:45:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;22840:2:122;22822:21;;;22879:2;22859:18;;;22852:30;22918:34;22913:2;22898:18;;22891:62;22989:7;22984:2;22969:18;;22962:35;23029:3;23014:19;;22638:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;:::-;;;;;;;;4349:6;:4;:6::i;:::-;4095:277;;:::o;3622:::-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;24280:2:122;24262:21;;;24319:2;24299:18;;;24292:30;24358:34;24353:2;24338:18;;24331:62;24429:7;24424:2;24409:18;;24402:35;24469:3;24454:19;;24078:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;7557:68:107:-;7550:75;;7437:195;:::o;4624:424::-;4746:15;;;;;-1:-1:-1;;;;;338:55:122;;4746:15:107;;;320:74:122;4746:8:107;;;;293:18:122;;4746:15:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:8;4771:133;;;4799:37;;;;;4813:4;4799:37;;;25495:41:122;;;25552:18;;;25545:50;;;25611:18;;;25604:50;;;25670:18;;;25663:50;4799:13:107;;;;25467:19:122;;4799:37:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4879:5;-1:-1:-1;;;;;4855:38:107;;4886:6;4855:38;;;;;;:::i;:::-;;;;;;;;4771:133;4913:13;;:38;;;;;-1:-1:-1;;;;;4913:13:107;;;;:20;;:38;;4934:6;;4942:8;;4913:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4970:13:107;;5014:18;;4961:80;;-1:-1:-1;;;;;;4970:13:107;;;;-1:-1:-1;4970:26:107;;4997:5;;5014:18;;5025:6;;5014:18;;;:::i;:::-;;;;;;;;;;;;;5004:29;;;;;;4970:64;;;;;;;;;;;;;;;-1:-1:-1;;;;;13364:55:122;;;;13346:74;;13451:2;13436:18;;13429:34;13334:2;13319:18;;13150:319;4970:64:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5036:4;4961:8;:80::i;:::-;4624:424;;;:::o;6286:146::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6380:45:107;6400:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6554:464:107;;;;;;;;-1:-1:-1;6554:464:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6841:19;6554:464;;;;;;;;6930:23;6554:464;;;;;;;;;;;6438:587;619:1105:106;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:106;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:106;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:106;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:106;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:106;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:106;;1223:9;;-1:-1:-1;1235:10:106;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:106;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:106;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:106;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:106;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:106;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:106;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:106;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;:::-;673:1051;619:1105::o;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:106;;;;;;;;;;;;-1:-1:-1;;1875:19:106;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:106;;;;;;;;;:11;;;;-1:-1:-1;1875:19:106;:11;;-1:-1:-1;;1875:11:106;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:106;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:119:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:119;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:119;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:119;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2224:661;;;2031:854;;;;;;:::o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;29983:74:122;;;2677:17:26;30073:18:122;;;30066:34;;;;2712:4:26;30116:18:122;;;30109:34;2489:11:26;;1671:64;2586:43;;29956:18:122;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;789:312:29:-;859:1;854:6;;:1;:6;;;850:245;;881:41;;;;;30356:2:122;30338:21;;;30395:2;30375:18;;;30368:30;30434:34;30429:2;30414:18;;30407:62;30505:4;30500:2;30485:18;;30478:32;30542:3;30527:19;;30154:398;881:41:29;;;;;;;;941:52;972:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:52;;;;;;:::i;:::-;;;;;;;;1012;1043:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1012:52;;;;;;:::i;1332:965:115:-;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:115;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:115;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:115;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:115;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:115;;;1863:39;;;320:74:122;1780:73:115;;-1:-1:-1;1863:27:115;;;;;293:18:122;;1863:39:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:115;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:115;;;;-1:-1:-1;2012:36:115;;;:::i;:::-;-1:-1:-1;;;;;31749:15:122;;;31731:34;;31801:15;;31796:2;31781:18;;31774:43;31658:2;31643:18;2012:36:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:115;:49;;;;-1:-1:-1;;;;;1999:49:115;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:115;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;320:74:122;2228:8:115;;;;293:18:122;;2228:20:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:115;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:115;;;2258:32;;;320:74:122;2258:19:115;;;;-1:-1:-1;2258:19:115;;-1:-1:-1;293:18:122;;2258:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:933;1332:965::o;373:261:120:-;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:120;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:120;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;5012:25:122;;;489:33:120;-1:-1:-1;481:42:120;;206;;548:7;;4985:18:122;;548:11:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:120;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:120;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;20040:117:31:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;953:558:119:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:119;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:119;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;1297:495:120:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:120;;;;:::i;:::-;;;;1405:356;;;-1:-1:-1;1777:8:120;;1297:495;-1:-1:-1;1297:495:120:o;829:297::-;980:10;;;;972:25;;;;;;;;34993::122;;;;35034:18;;;35027:34;;;914:12:120;;939:7;;;;;;206:42;;972:7;;34966:18:122;;972:25:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:120;;-1:-1:-1;938:59:120;-1:-1:-1;1008:22:120;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:120;;;;;;35653:19:122;;;;35688:12;;;35681:28;;;;-1:-1:-1;;;35747:3:122;35743:16;;;;35761:66;35739:89;35725:12;;;35718:111;1068:25:120;;;;;;;;;35845:12:122;;;;1068:25:120;;;;;-1:-1:-1;;;829:297:120:o;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;:::-;-1:-1:-1;15402:30:31;15314:125;-1:-1:-1;;15314:125:31:o;20436:825::-;20600:38;;;-1:-1:-1;;;;;338:55:122;;;20600:38:31;;;;320:74:122;;;;20600:38:31;;;;;;;;;;293:18:122;;;;20600:38:31;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:31;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:31;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;:60::-;20859:396;;20521:740;;20436:825;;;;:::o;15033:242::-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:31;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;5012:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;4985:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;7700:156:36:-;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:36;;;;;-1:-1:-1;4573:12:36;7813:36;7806:43;7700:156;-1:-1:-1;;;7700:156:36:o;7862:143::-;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:36;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:36;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:36;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:36;;;;;;;;;-1:-1:-1;;;;;9604:15:36;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:36;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:36;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:36;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:36;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:36;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:36;-1:-1:-1;9922:38:36;;-1:-1:-1;9857:44:36;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;13364:55:122;;9995:18:36;;;13346:74:122;13436:18;;;13429:34;;;9915:45:36;;-1:-1:-1;9980:12:36;;-1:-1:-1;9995:7:36;;;;13319:18:122;;9995::36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;36991:2:122;10056:175:36;;;36973:21:122;37030:3;37010:18;;;37003:31;37070:34;37050:18;;;37043:62;37141:34;37121:18;;;37114:62;37213:34;37192:19;;;37185:63;37285:17;37264:19;;;37257:46;37320:19;;10056:175:36;36789:556:122;10056:175:36;10251:24;;;;;-1:-1:-1;;;;;30001:55:122;;10251:24:36;;;29983:74:122;30073:18;;;30066:34;;;30116:18;;;30109:34;;;10251:8:36;;;;29956:18:122;;10251:24:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:36;;;10285:19;;;;;;-1:-1:-1;10321:9:36;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:36;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;11471:393::-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:36;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:36;;11110:304;-1:-1:-1;;;;11110:304:36:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:36;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:36;:15;;-1:-1:-1;1568:34:36;;-1:-1:-1;1452:33:36;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:36;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:36;;;;1532:174;;;-1:-1:-1;;;;;1627:15:36;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:36;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:36;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:36;-1:-1:-1;1903:38:36;;-1:-1:-1;1838:44:36;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;338:55:122;;1990:25:36;;;320:74:122;1896:45:36;;-1:-1:-1;1963:22:36;;-1:-1:-1;1990:11:36;;;;293:18:122;;1990:25:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:36;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:36;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;13364:55:122;;;;13346:74;;13451:2;13436:18;;13429:34;13334:2;13319:18;;13150:319;2077:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:36;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;13364:55:122;;;13346:74;;13436:18;;;13429:34;13319:18;2160:44:36;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;36991:2:122;2268:187:36;;;36973:21:122;37030:3;37010:18;;;37003:31;37070:34;37050:18;;;37043:62;37141:34;37121:18;;;37114:62;37213:34;37192:19;;;37185:63;37285:17;37264:19;;;37257:46;37320:19;;2268:187:36;36789:556:122;2268:187:36;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;39182:55:122;;;39164:74;;39286:66;39274:79;;;39254:18;;;39247:107;;;;39370:18;;;39363:34;39428:2;39413:18;;39406:34;39151:3;39136:19;2488:86:36;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:36;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:36;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:36;;;:88;;;;-1:-1:-1;;;;;2690:15:36;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:36;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:36;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:36;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:36;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:36;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;13364:55:122;;;;13346:74;;13451:2;13436:18;;13429:34;13334:2;13319:18;;13150:319;2894:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:36;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;13364:55:122;;;13346:74;;13436:18;;;13429:34;13319:18;2985:44:36;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:36;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;30001:55:122;;;3090:43:36;;;29983:74:122;30073:18;;;30066:34;3114:18:36;30116::122;;;30109:34;29956:18;;3090:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:36;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:36;;-1:-1:-1;3238:38:36;-1:-1:-1;3305:38:36;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;39182:55:122;;;39164:74;;39286:66;39274:79;;;39254:18;;;39247:107;;;;39370:18;;;39363:34;39428:2;39413:18;;39406:34;39151:3;39136:19;3519:86:36;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:36;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:36;-1:-1:-1;;;;;3737:15:36;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:36;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;30001:55:122;;;3834:29:36;;;29983:74:122;30073:18;;;30066:34;30116:18;;;30109:34;;;29956:18;;3834:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:36;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;30001:55:122;;;3926:29:36;;;29983:74:122;30073:18;;;30066:34;30116:18;;;30109:34;;;29956:18;;3926:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;39653:2:122;4000:74:36;;;39635:21:122;39672:18;;;39665:30;;;;39731:34;39711:18;;;39704:62;39802:34;39782:18;;;39775:62;39854:19;;4000:74:36;39451:428:122;2782:1303:36;-1:-1:-1;;;;;4116:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:36;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:36;;;;4095:162;;;;;;;40086:2:122;4095:162:36;;;40068:21:122;40125:2;40105:18;;;40098:30;40164:34;40144:18;;;40137:62;40235:17;40215:18;;;40208:45;40270:19;;4095:162:36;39884:411:122;4095:162:36;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:36;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:36;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:36;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;651:180:122:-;710:6;763:2;751:9;742:7;738:23;734:32;731:52;;;779:1;776;769:12;731:52;-1:-1:-1;802:23:122;;651:180;-1:-1:-1;651:180:122:o;836:250::-;921:1;931:113;945:6;942:1;939:13;931:113;;;1021:11;;;1015:18;1002:11;;;995:39;967:2;960:10;931:113;;;-1:-1:-1;;1078:1:122;1060:16;;1053:27;836:250::o;1091:329::-;1132:3;1170:5;1164:12;1197:6;1192:3;1185:19;1213:76;1282:6;1275:4;1270:3;1266:14;1259:4;1252:5;1248:16;1213:76;:::i;:::-;1334:2;1322:15;-1:-1:-1;;1318:88:122;1309:98;;;;1409:4;1305:109;;1091:329;-1:-1:-1;;1091:329:122:o;1425:435::-;-1:-1:-1;;;;;1659:6:122;1655:55;1644:9;1637:74;1747:6;1742:2;1731:9;1727:18;1720:34;1790:2;1785;1774:9;1770:18;1763:30;1618:4;1810:44;1850:2;1839:9;1835:18;1827:6;1810:44;:::i;1865:484::-;1918:3;1956:5;1950:12;1983:6;1978:3;1971:19;2009:4;2038:2;2033:3;2029:12;2022:19;;2075:2;2068:5;2064:14;2096:1;2106:218;2120:6;2117:1;2114:13;2106:218;;;2185:13;;-1:-1:-1;;;;;2181:62:122;2169:75;;2264:12;;;;2299:15;;;;2142:1;2135:9;2106:218;;;-1:-1:-1;2340:3:122;;1865:484;-1:-1:-1;;;;;1865:484:122:o;2354:261::-;2533:2;2522:9;2515:21;2496:4;2553:56;2605:2;2594:9;2590:18;2582:6;2553:56;:::i;2870:184::-;2922:77;2919:1;2912:88;3019:4;3016:1;3009:15;3043:4;3040:1;3033:15;3059:255;3131:2;3125:9;3173:6;3161:19;;3210:18;3195:34;;3231:22;;;3192:62;3189:88;;;3257:18;;:::i;:::-;3293:2;3286:22;3059:255;:::o;3319:334::-;3390:2;3384:9;3446:2;3436:13;;-1:-1:-1;;3432:86:122;3420:99;;3549:18;3534:34;;3570:22;;;3531:62;3528:88;;;3596:18;;:::i;:::-;3632:2;3625:22;3319:334;;-1:-1:-1;3319:334:122:o;3658:183::-;3718:4;3751:18;3743:6;3740:30;3737:56;;;3773:18;;:::i;:::-;-1:-1:-1;3818:1:122;3814:14;3830:4;3810:25;;3658:183::o;3846:662::-;3900:5;3953:3;3946:4;3938:6;3934:17;3930:27;3920:55;;3971:1;3968;3961:12;3920:55;4007:6;3994:20;4033:4;4057:60;4073:43;4113:2;4073:43;:::i;:::-;4057:60;:::i;:::-;4151:15;;;4237:1;4233:10;;;;4221:23;;4217:32;;;4182:12;;;;4261:15;;;4258:35;;;4289:1;4286;4279:12;4258:35;4325:2;4317:6;4313:15;4337:142;4353:6;4348:3;4345:15;4337:142;;;4419:17;;4407:30;;4457:12;;;;4370;;4337:142;;;-1:-1:-1;4497:5:122;3846:662;-1:-1:-1;;;;;;3846:662:122:o;4513:348::-;4597:6;4650:2;4638:9;4629:7;4625:23;4621:32;4618:52;;;4666:1;4663;4656:12;4618:52;4706:9;4693:23;4739:18;4731:6;4728:30;4725:50;;;4771:1;4768;4761:12;4725:50;4794:61;4847:7;4838:6;4827:9;4823:22;4794:61;:::i;:::-;4784:71;4513:348;-1:-1:-1;;;;4513:348:122:o;5310:484::-;5412:6;5420;5428;5481:2;5469:9;5460:7;5456:23;5452:32;5449:52;;;5497:1;5494;5487:12;5449:52;5533:9;5520:23;5510:33;;5594:2;5583:9;5579:18;5566:32;5621:18;5613:6;5610:30;5607:50;;;5653:1;5650;5643:12;5607:50;5676:61;5729:7;5720:6;5709:9;5705:22;5676:61;:::i;:::-;5666:71;;;5784:2;5773:9;5769:18;5756:32;5746:42;;5310:484;;;;;:::o;6087:1697::-;6291:4;6320:2;6360;6349:9;6345:18;6390:2;6379:9;6372:21;6413:6;6448;6442:13;6479:6;6471;6464:22;6505:2;6495:12;;6538:2;6527:9;6523:18;6516:25;;6600:2;6590:6;6587:1;6583:14;6572:9;6568:30;6564:39;6638:2;6630:6;6626:15;6659:1;6680;6690:1065;6706:6;6701:3;6698:15;6690:1065;;;6775:22;;;6799:66;6771:95;6759:108;;6890:13;;6977:9;;-1:-1:-1;;;;;6973:58:122;6958:74;;7071:11;;7065:18;7103:15;;;7096:27;;;7184:19;;6930:15;;;7216:24;;;7306:21;;;;7351:1;;7274:2;7262:15;;;7365:282;7381:8;7376:3;7373:17;7365:282;;;7462:15;;7479:66;7458:88;7444:103;;7616:17;;;;7409:1;7400:11;;;;;7573:14;;;;7365:282;;;-1:-1:-1;7733:12:122;;;;7670:5;-1:-1:-1;;;7698:15:122;;;;6732:1;6723:11;6690:1065;;;-1:-1:-1;7772:6:122;;6087:1697;-1:-1:-1;;;;;;;;;6087:1697:122:o;8020:861::-;8182:4;8211:2;8251;8240:9;8236:18;8281:2;8270:9;8263:21;8304:6;8339;8333:13;8370:6;8362;8355:22;8408:2;8397:9;8393:18;8386:25;;8470:2;8460:6;8457:1;8453:14;8442:9;8438:30;8434:39;8420:53;;8508:2;8500:6;8496:15;8529:1;8539:313;8553:6;8550:1;8547:13;8539:313;;;8642:66;8630:9;8622:6;8618:22;8614:95;8609:3;8602:108;8733:39;8765:6;8756;8750:13;8733:39;:::i;:::-;8723:49;-1:-1:-1;8830:12:122;;;;8795:15;;;;8575:1;8568:9;8539:313;;;-1:-1:-1;8869:6:122;;8020:861;-1:-1:-1;;;;;;;8020:861:122:o;9152:416::-;9245:6;9253;9306:2;9294:9;9285:7;9281:23;9277:32;9274:52;;;9322:1;9319;9312:12;9274:52;9362:9;9349:23;9395:18;9387:6;9384:30;9381:50;;;9427:1;9424;9417:12;9381:50;9450:61;9503:7;9494:6;9483:9;9479:22;9450:61;:::i;:::-;9440:71;9558:2;9543:18;;;;9530:32;;-1:-1:-1;;;;9152:416:122:o;9573:435::-;9626:3;9664:5;9658:12;9691:6;9686:3;9679:19;9717:4;9746:2;9741:3;9737:12;9730:19;;9783:2;9776:5;9772:14;9804:1;9814:169;9828:6;9825:1;9822:13;9814:169;;;9889:13;;9877:26;;9923:12;;;;9958:15;;;;9850:1;9843:9;9814:169;;10013:261;10192:2;10181:9;10174:21;10155:4;10212:56;10264:2;10253:9;10249:18;10241:6;10212:56;:::i;11172:248::-;11240:6;11248;11301:2;11289:9;11280:7;11276:23;11272:32;11269:52;;;11317:1;11314;11307:12;11269:52;-1:-1:-1;;11340:23:122;;;11410:2;11395:18;;;11382:32;;-1:-1:-1;11172:248:122:o;11926:437::-;12005:1;12001:12;;;;12048;;;12069:61;;12123:4;12115:6;12111:17;12101:27;;12069:61;12176:2;12168:6;12165:14;12145:18;12142:38;12139:218;;12213:77;12210:1;12203:88;12314:4;12311:1;12304:15;12342:4;12339:1;12332:15;12139:218;;11926:437;;;:::o;12772:184::-;12824:77;12821:1;12814:88;12921:4;12918:1;12911:15;12945:4;12942:1;12935:15;12961:184;13031:6;13084:2;13072:9;13063:7;13059:23;13055:32;13052:52;;;13100:1;13097;13090:12;13052:52;-1:-1:-1;13123:16:122;;12961:184;-1:-1:-1;12961:184:122:o;13474:178::-;-1:-1:-1;;;;;13577:5:122;13573:54;13566:5;13563:65;13553:93;;13642:1;13639;13632:12;13657:307;13759:6;13812:2;13800:9;13791:7;13787:23;13783:32;13780:52;;;13828:1;13825;13818:12;13780:52;13860:9;13854:16;13879:55;13928:5;13879:55;:::i;14865:430::-;15062:66;15054:6;15050:79;15045:3;15038:92;15020:3;15159:6;15153:13;15175:74;15242:6;15238:1;15233:3;15229:11;15222:4;15214:6;15210:17;15175:74;:::i;:::-;15269:16;;;;15287:1;15265:24;;14865:430;-1:-1:-1;;;14865:430:122:o;15300:287::-;15429:3;15467:6;15461:13;15483:66;15542:6;15537:3;15530:4;15522:6;15518:17;15483:66;:::i;:::-;15565:16;;;;;15300:287;-1:-1:-1;;15300:287:122:o;15592:164::-;15668:13;;15717;;15710:21;15700:32;;15690:60;;15746:1;15743;15736:12;15761:202;15828:6;15881:2;15869:9;15860:7;15856:23;15852:32;15849:52;;;15897:1;15894;15887:12;15849:52;15920:37;15947:9;15920:37;:::i;15968:184::-;16020:77;16017:1;16010:88;16117:4;16114:1;16107:15;16141:4;16138:1;16131:15;16157:125;16222:9;;;16243:10;;;16240:36;;;16256:18;;:::i;16386:1256::-;16602:13;;-1:-1:-1;;;;;86:54:122;74:67;;16564:3;16549:19;;16674:4;16666:6;16662:17;16656:24;16689:60;16743:4;16732:9;16728:20;16714:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;16689:60;;16798:4;16790:6;16786:17;16780:24;16813:62;16869:4;16858:9;16854:20;16838:14;-1:-1:-1;;;;;86:54:122;74:67;;14:133;16813:62;;16931:4;16923:6;16919:17;16913:24;16906:4;16895:9;16891:20;16884:54;16994:4;16986:6;16982:17;16976:24;16969:4;16958:9;16954:20;16947:54;17050:4;17042:6;17038:17;17032:24;17065:55;17114:4;17103:9;17099:20;17083:14;16363:10;16352:22;16340:35;;16287:94;17065:55;;17176:4;17168:6;17164:17;17158:24;17151:4;17140:9;17136:20;17129:54;17239:4;17231:6;17227:17;17221:24;17214:4;17203:9;17199:20;17192:54;17265:6;17325:2;17317:6;17313:15;17307:22;17302:2;17291:9;17287:18;17280:50;;17349:6;17404:2;17396:6;17392:15;17386:22;17417:51;17464:2;17453:9;17449:18;17433:14;5869:13;5862:21;5850:34;;5799:91;17417:51;-1:-1:-1;;17487:6:122;17535:15;;;17529:22;17509:18;;;17502:50;17571:6;17619:15;;;17613:22;17593:18;;;;17586:50;;;;16386:1256;:::o;17647:370::-;-1:-1:-1;;;;;17752:5:122;17746:12;17742:61;17737:3;17730:74;17853:4;17846:5;17842:16;17836:23;17829:4;17824:3;17820:14;17813:47;17712:3;17906:4;17899:5;17895:16;17889:23;17944:4;17937;17932:3;17928:14;17921:28;17965:46;18005:4;18000:3;17996:14;17982:12;17965:46;:::i;18022:791::-;-1:-1:-1;;;;;18389:6:122;18385:55;18374:9;18367:74;18477:3;18472:2;18461:9;18457:18;18450:31;18348:4;18504:69;18568:3;18557:9;18553:19;18545:6;18504:69;:::i;:::-;18621:9;18613:6;18609:22;18604:2;18593:9;18589:18;18582:50;18655:32;18680:6;18672;18655:32;:::i;:::-;18641:46;;18735:9;18727:6;18723:22;18718:2;18707:9;18703:18;18696:50;18763:44;18800:6;18792;18763:44;:::i;18818:170::-;18905:13;;18927:55;18905:13;18927:55;:::i;18993:167::-;19071:13;;19124:10;19113:22;;19103:33;;19093:61;;19150:1;19147;19140:12;19165:568;19218:5;19271:3;19264:4;19256:6;19252:17;19248:27;19238:55;;19289:1;19286;19279:12;19238:55;19318:6;19312:13;19344:18;19340:2;19337:26;19334:52;;;19366:18;;:::i;:::-;19410:114;19518:4;-1:-1:-1;;19442:4:122;19438:2;19434:13;19430:86;19426:97;19410:114;:::i;:::-;19549:2;19540:7;19533:19;19595:3;19588:4;19583:2;19575:6;19571:15;19567:26;19564:35;19561:55;;;19612:1;19609;19602:12;19561:55;19625:77;19699:2;19692:4;19683:7;19679:18;19672:4;19664:6;19660:17;19625:77;:::i;19738:1452::-;19848:6;19856;19900:9;19891:7;19887:23;19930:3;19926:2;19922:12;19919:32;;;19947:1;19944;19937:12;19919:32;19970:6;19996:2;19992;19988:11;19985:31;;;20012:1;20009;20002:12;19985:31;20038:22;;:::i;:::-;20025:35;;20083:48;20121:9;20083:48;:::i;:::-;20076:5;20069:63;20164:57;20217:2;20206:9;20202:18;20164:57;:::i;:::-;20159:2;20152:5;20148:14;20141:81;20254:57;20307:2;20296:9;20292:18;20254:57;:::i;:::-;20249:2;20242:5;20238:14;20231:81;20365:2;20354:9;20350:18;20344:25;20339:2;20332:5;20328:14;20321:49;20424:3;20413:9;20409:19;20403:26;20397:3;20390:5;20386:15;20379:51;20463:49;20507:3;20496:9;20492:19;20463:49;:::i;:::-;20457:3;20450:5;20446:15;20439:74;20567:3;20556:9;20552:19;20546:26;20540:3;20533:5;20529:15;20522:51;20627:3;20616:9;20612:19;20606:26;20600:3;20593:5;20589:15;20582:51;20652:3;20708:2;20697:9;20693:18;20687:25;20682:2;20675:5;20671:14;20664:49;;20732:3;20767:46;20809:2;20798:9;20794:18;20767:46;:::i;:::-;20751:14;;;20744:70;20833:3;20874:18;;;20868:25;20852:14;;;20845:49;20913:3;20954:18;;;20948:25;20932:14;;;20925:49;21027:18;;21021:25;20755:5;;-1:-1:-1;21069:18:122;21058:30;;21055:50;;;21101:1;21098;21091:12;21055:50;21124:60;21176:7;21167:6;21156:9;21152:22;21124:60;:::i;:::-;21114:70;;;19738:1452;;;;;:::o;21448:288::-;21623:6;21612:9;21605:25;21666:2;21661;21650:9;21646:18;21639:30;21586:4;21686:44;21726:2;21715:9;21711:18;21703:6;21686:44;:::i;21741:336::-;21810:6;21863:2;21851:9;21842:7;21838:23;21834:32;21831:52;;;21879:1;21876;21869:12;21831:52;21911:9;21905:16;21961:66;21954:5;21950:78;21943:5;21940:89;21930:117;;22043:1;22040;22033:12;23208:348;23438:2;23427:9;23420:21;23401:4;23458:49;23503:2;23492:9;23488:18;23121:2;23109:15;;23156:12;23149:4;23140:14;;23133:36;23194:2;23185:12;;23044:159;23458:49;23450:57;;23543:6;23538:2;23527:9;23523:18;23516:34;23208:348;;;;:::o;23725:::-;23955:2;23944:9;23937:21;23918:4;23975:49;24020:2;24009:9;24005:18;23638:2;23626:15;;23673:12;23666:4;23657:14;;23650:36;23711:2;23702:12;;23561:159;24484:397;24714:2;24703:9;24696:21;24677:4;24734:49;24779:2;24768:9;24764:18;23121:2;23109:15;;23156:12;23149:4;23140:14;;23133:36;23194:2;23185:12;;23044:159;24734:49;24726:57;;-1:-1:-1;;;;;24823:6:122;24819:55;24814:2;24803:9;24799:18;24792:83;24484:397;;;;:::o;24886:::-;25116:2;25105:9;25098:21;25079:4;25136:49;25181:2;25170:9;25166:18;23638:2;23626:15;;23673:12;23666:4;23657:14;;23650:36;23711:2;23702:12;;23561:159;25724:305;25935:2;25924:9;25917:21;25898:4;25955:68;26019:2;26008:9;26004:18;25996:6;25955:68;:::i;26034:386::-;26267:2;26256:9;26249:21;26230:4;26287:68;26351:2;26340:9;26336:18;26328:6;26287:68;:::i;:::-;26279:76;;26405:6;26398:14;26391:22;26386:2;26375:9;26371:18;26364:50;26034:386;;;;;:::o;26614:294::-;26695:1;26688:5;26685:12;26675:200;;26731:77;26728:1;26721:88;26832:4;26829:1;26822:15;26860:4;26857:1;26850:15;26675:200;26884:18;;26614:294::o;26913:1028::-;27312:4;27341:3;-1:-1:-1;;;;;27444:2:122;27436:6;27432:15;27421:9;27414:34;27484:6;27479:2;27468:9;27464:18;27457:34;27527:2;27522;27511:9;27507:18;27500:30;27547:44;27587:2;27576:9;27572:18;27564:6;27547:44;:::i;:::-;27539:52;;27600:53;27649:2;27638:9;27634:18;27626:6;27600:53;:::i;:::-;27684:3;27669:19;;27662:35;;;;-1:-1:-1;27728:3:122;27713:19;;27706:35;;;;27772:3;27757:19;;27750:35;;;;27822:15;;;27816:3;27801:19;;27794:44;27875:15;;;27869:3;27854:19;;27847:44;27922:3;27907:19;27900:35;;;;26913:1028;;-1:-1:-1;;;;26913:1028:122:o;27946:492::-;28121:3;28159:6;28153:13;28175:66;28234:6;28229:3;28222:4;28214:6;28210:17;28175:66;:::i;:::-;28304:13;;28263:16;;;;28326:70;28304:13;28263:16;28373:4;28361:17;;28326:70;:::i;:::-;28412:20;;27946:492;-1:-1:-1;;;;27946:492:122:o;28443:195::-;28482:3;28513:66;28506:5;28503:77;28500:103;;28583:18;;:::i;:::-;-1:-1:-1;28630:1:122;28619:13;;28443:195::o;28643:1133::-;29076:4;29105:3;-1:-1:-1;;;;;29208:2:122;29200:6;29196:15;29185:9;29178:34;29248:6;29243:2;29232:9;29228:18;29221:34;29291:2;29286;29275:9;29271:18;29264:30;29317:44;29357:2;29346:9;29342:18;29334:6;29317:44;:::i;:::-;29303:58;;29370:53;29419:2;29408:9;29404:18;29396:6;29370:53;:::i;:::-;29460:6;29454:3;29443:9;29439:19;29432:35;29504:6;29498:3;29487:9;29483:19;29476:35;29548:6;29542:3;29531:9;29527:19;29520:35;29604:2;29596:6;29592:15;29586:3;29575:9;29571:19;29564:44;29657:2;29649:6;29645:15;29639:3;29628:9;29624:19;29617:44;;29710:9;29702:6;29698:22;29692:3;29681:9;29677:19;29670:51;29738:32;29763:6;29755;29738:32;:::i;:::-;29730:40;28643:1133;-1:-1:-1;;;;;;;;;;;;;28643:1133:122:o;30557:439::-;30807:2;30796:9;30789:21;30770:4;30833:49;30878:2;30867:9;30863:18;23121:2;23109:15;;23156:12;23149:4;23140:14;;23133:36;23194:2;23185:12;;23044:159;30833:49;30930:9;30922:6;30918:22;30913:2;30902:9;30898:18;30891:50;30958:32;30983:6;30975;30958:32;:::i;31001:439::-;31251:2;31240:9;31233:21;31214:4;31277:49;31322:2;31311:9;31307:18;23638:2;23626:15;;23673:12;23666:4;23657:14;;23650:36;23711:2;23702:12;;23561:159;32707:339;-1:-1:-1;;;;;32888:6:122;32884:55;32873:9;32866:74;32976:2;32971;32960:9;32956:18;32949:30;32847:4;32996:44;33036:2;33025:9;33021:18;33013:6;32996:44;:::i;33051:1051::-;33468:4;33497:3;33527:2;33516:9;33509:21;33553:56;33605:2;33594:9;33590:18;33582:6;33553:56;:::i;:::-;33640:2;33625:18;;;33618:34;;;;-1:-1:-1;;;;;33749:15:122;;;33744:2;33729:18;;33722:43;33801:22;;;33796:2;33781:18;;33774:50;-1:-1:-1;33833:17:122;;33919:15;;;33913:3;33898:19;;33891:44;-1:-1:-1;;33972:15:122;;;33966:3;33951:19;;33944:44;34037:4;34025:17;;;;34019:3;34004:19;;33997:46;34080:15;;;34074:3;34059:19;;;34052:44;;;;33867:15;;33051:1051;-1:-1:-1;33051:1051:122:o;34107:408::-;-1:-1:-1;;;;;34314:6:122;34310:55;34299:9;34292:74;34402:2;34397;34386:9;34382:18;34375:30;34273:4;34422:44;34462:2;34451:9;34447:18;34439:6;34422:44;:::i;:::-;34414:52;;34502:6;34497:2;34486:9;34482:18;34475:34;34107:408;;;;;;:::o;35072:395::-;35158:6;35166;35174;35227:2;35215:9;35206:7;35202:23;35198:32;35195:52;;;35243:1;35240;35233:12;35195:52;35275:9;35269:16;35325:4;35318:5;35314:16;35307:5;35304:27;35294:55;;35345:1;35342;35335:12;35294:55;35413:2;35398:18;;35392:25;35457:2;35442:18;;;35436:25;35368:5;;35392:25;;-1:-1:-1;35436:25:122;35072:395;-1:-1:-1;;;35072:395:122:o;35868:128::-;35935:9;;;35956:11;;;35953:37;;;35970:18;;:::i;36001:610::-;36247:13;;36190:3;;36221;;36300:4;36327:15;;;36190:3;36370:175;36384:6;36381:1;36378:13;36370:175;;;36447:13;;36433:28;;36483:14;;;;36520:15;;;;36406:1;36399:9;36370:175;;;-1:-1:-1;;36554:21:122;;;-1:-1:-1;36591:14:122;;;;;-1:-1:-1;;;36001:610:122:o;36616:168::-;36689:9;;;36720;;36737:15;;;36731:22;;36717:37;36707:71;;36758:18;;:::i;37350:659::-;37415:5;37468:3;37461:4;37453:6;37449:17;37445:27;37435:55;;37486:1;37483;37476:12;37435:55;37515:6;37509:13;37541:4;37565:60;37581:43;37621:2;37581:43;:::i;37565:60::-;37659:15;;;37745:1;37741:10;;;;37729:23;;37725:32;;;37690:12;;;;37769:15;;;37766:35;;;37797:1;37794;37787:12;37766:35;37833:2;37825:6;37821:15;37845:135;37861:6;37856:3;37853:15;37845:135;;;37927:10;;37915:23;;37958:12;;;;37878;;37845:135;;38014:614;38143:6;38151;38204:2;38192:9;38183:7;38179:23;38175:32;38172:52;;;38220:1;38217;38210:12;38172:52;38253:9;38247:16;38282:18;38323:2;38315:6;38312:14;38309:34;;;38339:1;38336;38329:12;38309:34;38362:72;38426:7;38417:6;38406:9;38402:22;38362:72;:::i;:::-;38352:82;;38480:2;38469:9;38465:18;38459:25;38443:41;;38509:2;38499:8;38496:16;38493:36;;;38525:1;38522;38515:12;38493:36;;38548:74;38614:7;38603:8;38592:9;38588:24;38548:74;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_ERC1271Forwarder_isValidSignature_RevertsOnBadHash()":"dcd6f107","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_ERC1271Forwarder_isValidSignature_RevertsOnBadHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_ERC1271Forwarder_isValidSignature_RevertsOnBadHash()\":{\"details\":\"`ERC1271Forwarder` should revert on hash mismatch\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.forwarder.t.sol\":\"ComposableCoWForwarderTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.forwarder.t.sol\":{\"keccak256\":\"0xef82244bc2123d74f7d2faa6f350ad739ab9894d150f3eac8b55f32ce60a2079\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e306b55b702b58d7e128780745999a5db4a6299717509435cc7d56b45a1b83aa\",\"dweb:/ipfs/QmPiWeAFCFurpox3xWtNj8E7x6huFK8C6LiuXGTEjouWjd\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_ERC1271Forwarder_isValidSignature_RevertsOnBadHash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_ERC1271Forwarder_isValidSignature_RevertsOnBadHash()":{"details":"`ERC1271Forwarder` should revert on hash mismatch"},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.forwarder.t.sol":"ComposableCoWForwarderTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.forwarder.t.sol":{"keccak256":"0xef82244bc2123d74f7d2faa6f350ad739ab9894d150f3eac8b55f32ce60a2079","urls":["bzz-raw://e306b55b702b58d7e128780745999a5db4a6299717509435cc7d56b45a1b83aa","dweb:/ipfs/QmPiWeAFCFurpox3xWtNj8E7x6huFK8C6LiuXGTEjouWjd"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":108} \ No newline at end of file diff --git a/out/ComposableCoW.gat.t.sol/ComposableCoWGatTest.json b/out/ComposableCoW.gat.t.sol/ComposableCoWGatTest.json new file mode 100644 index 0000000..a05d031 --- /dev/null +++ b/out/ComposableCoW.gat.t.sol/ComposableCoWGatTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzContext","inputs":[{"name":"buyToken","type":"address","internalType":"contract IERC20"},{"name":"owner","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"allowPartialFill","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertBeforeStartTime","inputs":[{"name":"currentTime","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertBelowMinBalance","inputs":[{"name":"currentBalance","type":"uint256","internalType":"uint256"},{"name":"minBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertTooLowOutput","inputs":[{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"expectedOut","type":"uint256","internalType":"uint256"},{"name":"allowedSlippage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_e2e_Fuzz","inputs":[{"name":"currentTime","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"minBalance","type":"uint256","internalType":"uint256"},{"name":"currentBalance","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_e2e_FuzzWithPriceChecker","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"expectedOut","type":"uint256","internalType":"uint256"},{"name":"allowedSlippage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_settle_e2e","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_verify_e2e_fuzz","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"expectedOut","type":"uint256","internalType":"uint256"},{"name":"allowedSlippage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790553480156200002e57600080fd5b506040516200003d9062000389565b604051809103906000f0801580156200005a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055604051620000899062000397565b604051809103906000f080158015620000a6573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000d590620003a5565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012190620003b3565b604051809103906000f0801580156200013e573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200016d90620003c1565b604051809103906000f0801580156200018a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001b990620003cf565b604051809103906000f080158015620001d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020590620003dd565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f0801580156200025a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200028990620003dd565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002de573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200030d90620003dd565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000362573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003eb565b613dd18062014f1083390190565b6109798062018ce183390190565b611168806201965a83390190565b6124eb806201a7c283390190565b6102ec806201ccad83390190565b610470806201cf9983390190565b610e13806201d40983390190565b62014b1480620003fc6000396000f3fe60806040523480156200001157600080fd5b5060043610620003255760003560e01c806385226c8111620001b1578063cf06c7b711620000f5578063dfe274a911620000a3578063f699b9a1116200007a578063f699b9a1146200067b578063fa7626d41462000692578063fbfa77cf14620006a057600080fd5b8063dfe274a91462000646578063e20c9f71146200065a578063e27d5153146200066457600080fd5b8063d21220a711620000d8578063d21220a71462000604578063d4aec6641462000618578063dd1d2599146200062f57600080fd5b8063cf06c7b714620005d6578063cf30a7d314620005ed57600080fd5b8063b62654fb116200015f578063ba414fa61162000136578063ba414fa614620005a4578063c45a015514620005ae578063c80916d414620005c257600080fd5b8063b62654fb1462000560578063b716db661462000574578063b8616195146200057e57600080fd5b80639fbcc9ad11620001945780639fbcc9ad146200052e578063ad9b04751462000542578063b5508aa9146200055657600080fd5b806385226c81146200050b578063916a17c6146200052457600080fd5b806336ccd34211620002795780636253089111620002275780637d499aa411620001fe5780637d499aa414620004cc5780638099957e14620004e05780638406c07914620004f757600080fd5b806362530891146200048557806366d9a9a0146200049c5780637b07ac8314620004b557600080fd5b80633f7286f4116200025c5780633f7286f4146200043f57806351160630146200044957806358161a42146200045d57600080fd5b806336ccd342146200041e5780633e5e3c23146200043557600080fd5b80631ed7831c11620002d7578063294402cc11620002ba578063294402cc14620003da5780632e08d60214620003ee578063329696ac146200041457600080fd5b80631ed7831c14620003ad57806325be124e14620003c657600080fd5b80630dfe1681116200030c5780630dfe168114620003675780630ef28fec146200037b578063151bcd2c146200038557600080fd5b80630a9254e4146200032a5780630c8548f51462000336575b600080fd5b62000334620006b4565b005b6033546200034a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6021546200034a906001600160a01b031681565b6200033462000788565b6200039c620003963660046200812a565b620009d2565b6040516200035e9392919062008198565b620003b762000a8f565b6040516200035e919062008208565b6023546200034a906001600160a01b031681565b601f546200034a906001600160a01b031681565b62000405620003ff36600462008347565b62000af3565b6040519081526020016200035e565b6200033462000bcf565b620003346200042f36600462008388565b62000cdd565b620003b76200131d565b620003b76200137f565b6025546200034a906001600160a01b031681565b620004746200046e366004620083c4565b620013e1565b60405190151581526020016200035e565b620003346200049636600462008418565b62001434565b620004a662001754565b6040516200035e91906200843b565b62000334620004c636600462008388565b6200185c565b6032546200034a906001600160a01b031681565b62000334620004f136600462008418565b62001e50565b602a546200034a906001600160a01b031681565b620005156200201e565b6040516200035e919062008528565b620004a6620020f8565b601e546200034a906001600160a01b031681565b6031546200034a906001600160a01b031681565b62000515620021f7565b601b546200034a906001600160a01b031681565b62000334620022d1565b620005956200058f366004620085ac565b6200240d565b6040516200035e919062008627565b62000474620025e5565b601c546200034a906001600160a01b031681565b601d546200034a906001600160a01b031681565b62000405620005e73660046200812a565b62002731565b62000334620005fe3660046200863c565b6200289a565b6022546200034a906001600160a01b031681565b62000334620006293660046200868e565b62002d01565b620004056200064036600462008418565b6200318f565b6020546200034a906001600160a01b031681565b620003b7620031bf565b62000405620006753660046200812a565b62003221565b620003346200068c3660046200871c565b6200324e565b600054620004749060ff1681565b6024546200034a906001600160a01b031681565b620006be620034bb565b604051620006cc9062008077565b604051809103906000f080158015620006e9573d6000803e3d6000fd5b50603a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620007309062008085565b604051809103906000f0801580156200074d573d6000803e3d6000fd5b50603b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60408051606081018252603b546001600160a01b031681528151600160208083019190915260009390830191016040516020818303038152906040528152602001603281525090506000620007fe82604051602001620007e9919062008760565b6040516020818303038152906040526200383b565b6031548151606083015192935060009262000825926001600160a01b03169185916200393c565b8251603154608085015192935062000849926001600160a01b039091169062003b2b565b60a08201516040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620008b657600080fd5b505af1158015620008cb573d6000803e3d6000fd5b5050603454603154604080516064602080830182905283518084039091018152600083850181815260608501958690527f26e0a1960000000000000000000000000000000000000000000000000000000090955297508796506001600160a01b03958616956326e0a1969562000947959116938a9301620087db565b600060405180830381865afa15801562000965573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200098f919081019062008924565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152939550919350620009cb9216908484600062003b3f565b5050505050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000a0690620089db565b80601f016020809104026020016040519081016040528092919081815260200182805462000a3490620089db565b801562000a855780601f1062000a595761010080835404028352916020019162000a85565b820191906000526020600020905b81548152906001019060200180831162000a6757829003601f168201915b5050505050905083565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000ae957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000aca575b5050505050905090565b6000600182511162000b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60018251111562000baa5762000ba2826200446c565b915062000b8c565b8160008151811062000bc05762000bc062008a30565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000cdb926001600160a01b03169163f698da259160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5b919062008a5f565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000caf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd5919062008a5f565b620045f8565b565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000d4757600080fd5b505afa15801562000d5c573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528688106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000dc657600080fd5b505afa15801562000ddb573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062000e2a90506127107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908510600482015260240160006040518083038186803b15801562000e7a57600080fd5b505afa15801562000e8f573d6000803e3d6000fd5b5050505062000ea38160006127106200470e565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261271062000ece848262008aee565b62000eda908662008b04565b62000ee6919062008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815290861015600482015260240160006040518083038186803b15801562000f3757600080fd5b505afa15801562000f4c573d6000803e3d6000fd5b505060408051606081018252603b546001600160a01b031681528151602080820188905283518083038201815291840184528083019190915281830186905291519093506000925062000fa791620007e99185910162008760565b60a0810188905260c081018790526031548151606083015192935060009262000fdc926001600160a01b03169185916200393c565b6040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152600481018a9052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200104657600080fd5b505af11580156200105b573d6000803e3d6000fd5b5050835160315460808601516200108094509192506001600160a01b03169062003b2b565b60345460315460408051602081018a905260009384936001600160a01b03918216936326e0a1969392909116918791015b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b169091526200110593929160248101620087db565b600060405180830381865afa15801562001123573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200114d919081019062008924565b603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062001311937f1626ba7e00000000000000000000000000000000000000000000000000000000936001600160a01b0393841693631626ba7e9362001284938a93929091169163f698da259160048083019260209291908290030181865afa158015620011f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001218919062008a5f565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856040518363ffffffff1660e01b8152600401620012a492919062008b1e565b602060405180830381865afa158015620012c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e8919062008b39565b7fffffffff00000000000000000000000000000000000000000000000000000000161462004760565b50505050505050505050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000ae9576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000aca575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000ae9576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000aca575050505050905090565b81516000908290825b8181101562001426576200141b838783815181106200140d576200140d62008a30565b60200260200101516200318f565b9250600101620013ea565b5050841490505b9392505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528183106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200149a57600080fd5b505afa158015620014af573d6000803e3d6000fd5b505050506000620014cf604051806020016040528060008152506200383b565b60a081018390526040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200154057600080fd5b505af115801562001555573d6000803e3d6000fd5b5050604080518082018252600981527f746f6f206561726c79000000000000000000000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507f7e3346370000000000000000000000000000000000000000000000000000000091620015dd9187919060240162008b1e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620016519160040162008b7d565b600060405180830381600087803b1580156200166c57600080fd5b505af115801562001681573d6000803e3d6000fd5b5050603a546031546040516001600160a01b03928316945063b8296fc493509116906000908190620016b890879060200162008b92565b60408051601f19818403018152828252670de0b6b3a7640000602084015291016040516020818303038152906040526040518663ffffffff1660e01b81526004016200170995949392919062008c50565b61018060405180830381865afa15801562001728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200174e919062008ca4565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620018535760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200183a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620017e65790505b5050505050815250508152602001906001019062001778565b50505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620018c657600080fd5b505afa158015620018db573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528688106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200194557600080fd5b505afa1580156200195a573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e5629150620019a990506127107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908510600482015260240160006040518083038186803b158015620019f957600080fd5b505afa15801562001a0e573d6000803e3d6000fd5b5050505062001a228160006127106200470e565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261271062001a4d848262008aee565b62001a59908662008b04565b62001a65919062008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815290861015600482015260240160006040518083038186803b15801562001ab657600080fd5b505afa15801562001acb573d6000803e3d6000fd5b505060408051606081018252603b546001600160a01b031681528151602080820188905283518083038201815291840184528083019190915281830186905291519093506000925062001b2691620007e99185910162008760565b60a081018890526040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101899052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562001b9757600080fd5b505af115801562001bac573d6000803e3d6000fd5b50508251603154608085015162001bd194509192506001600160a01b03169062003b2b565b603a546031546040516000926001600160a01b039081169263b8296fc4929116908490819062001c0690889060200162008b92565b60408051601f19818403018152828252602083018e905291016040516020818303038152906040526040518663ffffffff1660e01b815260040162001c5095949392919062008c50565b61018060405180830381865afa15801562001c6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c95919062008ca4565b90506000603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001ced573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d13919062008a5f565b603a546031549192506001600160a01b03908116916314a2a7849116600062001da38686601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856000801b8960405160200162001dbb919062008b92565b6040516020818303038152906040528e60405160200162001dde91815260200190565b6040516020818303038152906040528a6040518963ffffffff1660e01b815260040162001e1398979695949392919062008cc4565b60006040518083038186803b15801562001e2c57600080fd5b505afa15801562001e41573d6000803e3d6000fd5b50505050505050505050505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528183106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001eb657600080fd5b505afa15801562001ecb573d6000803e3d6000fd5b50505050600062001eeb604051806020016040528060008152506200383b565b6080810183905260a08101516040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029162001f4d9160040190815260200190565b600060405180830381600087803b15801562001f6857600080fd5b505af115801562001f7d573d6000803e3d6000fd5b5050825160315462001f9d93509091506001600160a01b03168562003b2b565b604080518082018252601481527f62616c616e636520696e73756666696369656e7400000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620015dd9160240162008b7d565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620018535783829060005260206000200180546200206490620089db565b80601f01602080910402602001604051908101604052809291908181526020018280546200209290620089db565b8015620020e35780601f10620020b757610100808354040283529160200191620020e3565b820191906000526020600020905b815481529060010190602001808311620020c557829003601f168201915b50505050508152602001906001019062002042565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620018535760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021de57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200218a5790505b505050505081525050815260200190600101906200211c565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620018535783829060005260206000200180546200223d90620089db565b80601f01602080910402602001604051908101604052809291908181526020018280546200226b90620089db565b8015620022bc5780601f106200229057610100808354040283529160200191620022bc565b820191906000526020600020905b8154815290600101906020018083116200229e57829003601f168201915b5050505050815260200190600101906200221b565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000cdb946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa1580156200234d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002373919062008a5f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620023d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023fb919062008def565b6034546001600160a01b0316620047db565b60606001835111620024a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000b83565b6000620024af845162002731565b67ffffffffffffffff811115620024ca57620024ca6200821d565b604051908082528060200260200182016040528015620024f4578160200160208202803683370190505b50905060005b600185511115620025db5783600116600103620025585784600185038151811062002529576200252962008a30565b602002602001015182828151811062002546576200254662008a30565b602002602001018181525050620025bf565b845184600101036200257d576000801b82828151811062002546576200254662008a30565b84846001018151811062002595576200259562008a30565b6020026020010151828281518110620025b257620025b262008a30565b6020026020010181815250505b600101600284049350620025d3856200446c565b9450620024fa565b5090505b92915050565b60008054610100900460ff1615620026065750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200272c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620026ae917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162008e0f565b60408051601f1981840301815290829052620026ca9162008e59565b6000604051808303816000865af19150503d806000811462002709576040519150601f19603f3d011682016040523d82523d6000602084013e6200270e565b606091505b509150508080602001905181019062002728919062008e77565b9150505b919050565b6000600182116200274457506000919050565b60008270010000000000000000000000000000000081106200277557608093841c9362002772908362008e97565b91505b6801000000000000000084106200279b57604093841c9362002798908362008e97565b91505b6401000000008410620027bd57602093841c93620027ba908362008e97565b91505b620100008410620027dd57601093841c93620027da908362008e97565b91505b6101008410620027fc57600893841c93620027f9908362008e97565b91505b601084106200281a57600493841c9362002817908362008e97565b91505b600484106200283857600293841c9362002835908362008e97565b91505b6002841062002851576200284e60018362008e97565b91505b600081620028628119600162008e97565b1690508181148015620028755750600083115b15620028845750909392505050565b6200289183600162008e97565b95945050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562620028e26127107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908510600482015260240160006040518083038186803b1580156200293257600080fd5b505afa15801562002947573d6000803e3d6000fd5b505050506200295b8160006127106200470e565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261271062002986848262008aee565b62002992908662008b04565b6200299e919062008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908610600482015260240160006040518083038186803b158015620029ee57600080fd5b505afa15801562002a03573d6000803e3d6000fd5b505060408051606081018252603b546001600160a01b031681528151602080820188905283518083038201815291840184528083019190915281830186905291519093506000925062002a5e91620007e99185910162008760565b60a08101516040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029162002ab99160040190815260200190565b600060405180830381600087803b15801562002ad457600080fd5b505af115801562002ae9573d6000803e3d6000fd5b50508251603154608085015162002b0e94509192506001600160a01b03169062003b2b565b604080518082018252601481527f707269636520636865636b6572206661696c656400000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fd05f3065000000000000000000000000000000000000000000000000000000009162002b8f9160240162008b7d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262002c039160040162008b7d565b600060405180830381600087803b15801562002c1e57600080fd5b505af115801562002c33573d6000803e3d6000fd5b5050603a546031546040516001600160a01b03928316945063b8296fc49350911690600090819062002c6a90879060200162008b92565b60408051601f19818403018152828252602083018d905291016040516020818303038152906040526040518663ffffffff1660e01b815260040162002cb495949392919062008c50565b61018060405180830381865afa15801562002cd3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cf9919062008ca4565b505050505050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002d6b57600080fd5b505afa15801562002d80573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528486106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002dea57600080fd5b505afa15801562002dff573d6000803e3d6000fd5b505060408051610140810182526021546001600160a01b0390811682528c8116602080840191909152908b1682840152606082018a905260006080830181905260a0830189815260c0840189905287151560e0850152845192830185529082526101008301919091527f53e54576d72189ffa98650841aeb896fa1a6ac9c5f315c73cd4c0fafecfab6c86101208301525191517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101929092529250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063e5d6bf0290602401600060405180830381600087803b15801562002efa57600080fd5b505af115801562002f0f573d6000803e3d6000fd5b50508251603154608085015162002f3494509192506001600160a01b03169062003b2b565b603a546040516000916001600160a01b03169063b8296fc4908b908490819062002f6390889060200162008b92565b60408051601f19818403018152828252602083018e905291016040516020818303038152906040526040518663ffffffff1660e01b815260040162002fad95949392919062008c50565b61018060405180830381865afa15801562002fcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ff2919062008ca4565b60408051610180810182526021546001600160a01b0390811682528d81166020808401919091528c821683850152606083018c9052608083018b905263ffffffff891660a08401527f53e54576d72189ffa98650841aeb896fa1a6ac9c5f315c73cd4c0fafecfab6c860c0840152600060e08401527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008401528715156101208401527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140840181905261016084015260255484517ff698da2500000000000000000000000000000000000000000000000000000000815294519596509294620031829462003129948894169263f698da25926004808401938290030181865afa158015620011f2573d6000803e3d6000fd5b62000cd583602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011f2573d6000803e3d6000fd5b5050505050505050505050565b60008183108015620031a9578360005282602052620031b2565b82600052836020525b5050604060002092915050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000ae9576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000aca575050505050905090565b6000808219600101831683145b83156200324657600193841c9391909101906200322e565b900392915050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620032b857600080fd5b505afa158015620032cd573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528688106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200333757600080fd5b505afa1580156200334c573d6000803e3d6000fd5b505050506200335d8686866200470e565b95506200338c82847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200470e565b91506000620033aa604051806020016040528060008152506200383b565b60a0810187905260c081018690526080810185905260315481516060830151929350600092620033e6926001600160a01b03169185916200393c565b6040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152600481018a9052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200345057600080fd5b505af115801562003465573d6000803e3d6000fd5b505083516031546200348593509091506001600160a01b03168662003b2b565b603454603154604080516020810187905260009384936001600160a01b03918216936326e0a196939290911691879101620010b1565b620034c5620048ed565b6025546040516001600160a01b0390911690620034e29062008093565b6001600160a01b039091168152602001604051809103906000f0801580156200350f573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200369794938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa158015620035d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035f6919062008a5f565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200368062004caf565b6031546001600160a01b0316949392919062004d89565b604051620036a590620080a1565b604051809103906000f080158015620036c2573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200370990620080af565b604051809103906000f08015801562003726573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200376d90620080bd565b604051809103906000f0801580156200378a573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603454604051911690620037d390620080cb565b6001600160a01b039091168152602001604051809103906000f08015801562003800573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082015261012081019190915260408051610140810182526021546001600160a01b03908116825260225416602082015260009181019190915268056bc75e2d631000006060820152680ad78ebc5ac6200000608082015260a08101620038e9426201518062008e97565b8152602001620038fd426202a30062008e97565b81526020016000151581526020018381526020017f53e54576d72189ffa98650841aeb896fa1a6ac9c5f315c73cd4c0fafecfab6c88152509050919050565b60408051606080820183526000808352602083015291810191909152603a54604051620039ea916001600160a01b0316907fc2376e7ea518b4e08287336e2b7d4e3507de3fcc71e9ba0f0b95d0571389c1cb906200399f90889060200162008b92565b60408051601f19818403018152606080840183526000808552602085810191909152938301819052825190810183526001600160a01b03959095168552918401929092529082015290565b9050620039fa8582600062004fb0565b62003a0783868462003b2b565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003a7657600080fd5b505af115801562003a8b573d6000803e3d6000fd5b5050602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052908616925063095ea7b391506044016020604051808303816000875af115801562003afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b22919062008e77565b50949350505050565b62003b3a83838360006200525c565b505050565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050600062003c9a62003c9283602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011f2573d6000803e3d6000fd5b8790620054f3565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003d0f57600080fd5b505af115801562003d24573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af115801562003d9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dc2919062008e77565b5060408051600280825260608201835260009260208301908036833701905050905085600001518160008151811062003dff5762003dff62008a30565b60200260200101906001600160a01b031690816001600160a01b03168152505085602001518160018151811062003e3a5762003e3a62008a30565b6001600160a01b0392909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050905083606001518160008151811062003e905762003e9062008a30565b60200260200101818152505083608001518160018151811062003eb75762003eb762008a30565b602090810291909101015260408051600280825260608201909252600091816020015b62003f4a604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b81526020019060019003908162003eda579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e00151815260200162003fd28a60026200561d565b8152602001896060015181526020018b8960405160200162003ff692919062008ead565b604051602081830303815290604052815250816000815181106200401e576200401e62008a30565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e001518152602001620040988760006200561d565b8152602001866060015181526020018581525081600181518110620040c157620040c162008a30565b602002602001018190525060006040518060600160405280600067ffffffffffffffff811115620040f657620040f66200821d565b6040519080825280602002602001820160405280156200414557816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620041155790505b50815260200160006040519080825280602002602001820160405280156200419c57816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200416c5790505b5081526020016000604051908082528060200260200182016040528015620041f357816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620041c35790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200426c57600080fd5b505af115801562004281573d6000803e3d6000fd5b5050507fffffffff000000000000000000000000000000000000000000000000000000008816905062004339576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b90620042ff90879087908790879060040162008faf565b600060405180830381600087803b1580156200431a57600080fd5b505af11580156200432f573d6000803e3d6000fd5b5050505062003182565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620043c157600080fd5b505af1158015620043d6573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b91506200442b90879087908790879060040162008faf565b600060405180830381600087803b1580156200444657600080fd5b505af11580156200445b573d6000803e3d6000fd5b505050505050505050505050505050565b6060806000835190508060011660010362004529576002810460010167ffffffffffffffff811115620044a357620044a36200821d565b604051908082528060200260200182016040528015620044cd578160200160208202803683370190505b509150620044fe846001830381518110620044ec57620044ec62008a30565b60200260200101516000801b6200318f565b8260018451038151811062004517576200451762008a30565b60200260200101818152505062004576565b6002810467ffffffffffffffff8111156200454857620045486200821d565b60405190808252806020026020018201604052801562004572578160200160208202803683370190505b5091505b6000805b60018303811015620045ee57620045bf8682815181106200459f576200459f62008a30565b60200260200101518783600101815181106200140d576200140d62008a30565b848381518110620045d457620045d462008a30565b60209081029190910101526001909101906002016200457a565b5091949350505050565b8082146200470a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620046869060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620046bf91906200910f565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620046f891906200915b565b60405180910390a16200470a6200576a565b5050565b60006200471d848484620058b1565b90506200142d6040518060400160405280600c81526020017f426f756e6420526573756c7400000000000000000000000000000000000000008152508262005b18565b80620047d8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620047c69060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620047d86200576a565b50565b806001600160a01b0316826001600160a01b0316146200470a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200487b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620048b4919062009199565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620046f89190620091ee565b620048f762005be6565b620049376040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062006042565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620049ba9062006042565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c0000000000000000000000000000000000000000000000000000009181019190915262004a3d9062006042565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462004a9c929182169116683635c9adc5dea0000062003b2b565b602254602d5462004ac4916001600160a01b039081169116683635c9adc5dea0000062003b2b565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062004b0a5762004b0a62008a30565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062004b3e5762004b3e62008a30565b6001600160a01b039283166020918202929092010152602f5482519116908290600290811062004b725762004b7262008a30565b6001600160a01b039283166020918202929092010152601c54601b54601e5462004bac9392831692918216918591600291166000620061c8565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462004c049392831692918216918591600291166001620061c8565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462004c5b93928316929182169185916002911681620061c8565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602154603154620047d8929182169116683635c9adc5dea0000062003b2b565b604080516002808252606082810190935260009190816020015b604080518082019091526000808252602082015281526020019060019003908162004cc957505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062004d2a5762004d2a62008a30565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062004d735762004d7362008a30565b6020026020010181905250620025df81620062cc565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004dca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004df0919062008a5f565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b815260040162004e379a9998979695949392919062009297565b602060405180830381865afa15801562004e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e7b919062008a5f565b905062004e8883620062cc565b9250606060005b845181101562004f05578162004ecb8487848151811062004eb45762004eb462008a30565b6020026020010151620054f390919063ffffffff16565b60405160200162004ede9291906200930e565b6040516020818303038152906040529150808062004efc9062009341565b91505062004e8f565b50886001600160a01b0316636a7612028989898960008060008060008b60405160200162004f34919062008e59565b6040516020818303038152906040526040518b63ffffffff1660e01b815260040162004f6a9a999897969594939291906200937c565b6020604051808303816000875af115801562004f8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001311919062008e77565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200501f57600080fd5b505af115801562005034573d6000803e3d6000fd5b50505050801562005118576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620050bb57600080fd5b505af1158015620050d0573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516200510f919062009403565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062005165908590859060040162009418565b600060405180830381600087803b1580156200518057600080fd5b505af115801562005195573d6000803e3d6000fd5b505060345460405162003b3a93506001600160a01b039091169150636108c532908690620051c890879060200162009403565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401620052109291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200522e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005254919062008e77565b600162006405565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790529151600092871691620052e09162008e59565b6000604051808303816000865af19150503d80600081146200531f576040519150601f19603f3d011682016040523d82523d6000602084013e62005324565b606091505b5091505060008180602001905181019062005340919062008a5f565b905062005393846200538c87620053857f70a08231000000000000000000000000000000000000000000000000000000006200537e60058d620065f9565b9062006637565b9062006670565b9062006699565b821562002cf95760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b038916916200540c919062008e59565b6000604051808303816000865af19150503d80600081146200544b576040519150601f19603f3d011682016040523d82523d6000602084013e62005450565b606091505b509150506000818060200190518101906200546c919062008a5f565b905082861015620054975762005483868462008aee565b6200548f908262008aee565b9050620054b2565b620054a3838762008aee565b620054af908262008e97565b90505b620054e9816200538c7f18160ddd000000000000000000000000000000000000000000000000000000006200537e60058d620065f9565b5050505050505050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562005574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200559a91906200943e565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc8361010001510362005650576001175b8261012001511562005660576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632836101400151036200569657600817620056c7565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce83610140015103620056c757600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce83610160015103620056f8576010175b60018260038111156200570f576200570f6200922c565b036200571e57602017620025df565b60028260038111156200573557620057356200922c565b036200574457604017620025df565b60038260038111156200575b576200575b6200922c565b03620025df5760601792915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620058835760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200581e929160200162008e0f565b60408051601f19818403018152908290526200583a9162008e59565b6000604051808303816000865af19150503d806000811462005879576040519150601f19603f3d011682016040523d82523d6000602084013e6200587e565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60008183111562005945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840162000b83565b828410158015620059565750818411155b15620059645750826200142d565b600062005972848462008aee565b6200597f90600162008e97565b9050600385111580156200599257508481115b15620059ad57620059a4858562008e97565b9150506200142d565b620059da60037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008aee565b851015801562005a14575062005a11857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008aee565b81115b1562005a525762005a46857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008aee565b620059a4908462008aee565b8285111562005ab457600062005a69848762008aee565b9050600062005a7983836200947d565b90508060000362005a90578493505050506200142d565b600162005a9e828862008e97565b62005aaa919062008aee565b9350505062005b10565b8385101562005b1057600062005acb868662008aee565b9050600062005adb83836200947d565b90508060000362005af2578593505050506200142d565b62005afe818662008aee565b62005b0b90600162008e97565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b0316838360405160240162005b4492919062009494565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc000000000000000000000000000000000000000000000000000000001790525162005ba9919062008e59565b600060405180830381855afa9150503d806000811462002cf9576040519150601f19603f3d011682016040523d82523d6000602084013e62002cf9565b62005c266040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062006042565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c76657200000000000000000000000000000000000000000000000000009181019190915262005ca99062006042565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262005d2c90620066a5565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062005d7590620080d9565b604051809103906000f08015801562005d92573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562005df657600080fd5b505af115801562005e0b573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062005e2e90620080e7565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562005e62573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562005eef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f15919062008def565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562005fb357600080fd5b505af115801562005fc8573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200602d57600080fd5b505af1158015620009cb573d6000803e3d6000fd5b60408051808201909152600080825260208201526000826040516020016200606b919062008e59565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620060f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006116919062008def565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200616d9084908890600401620094b8565b600060405180830381600087803b1580156200618857600080fd5b505af11580156200619d573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b88886000896000806000604051602401620062049796959493929190620094dc565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200627b9291879060040162009546565b6020604051808303816000875af11580156200629b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062c1919062008def565b979650505050505050565b606060005b8251811015620063fe576000620062ea82600162008e97565b90505b8351811015620063e8578381815181106200630c576200630c62008a30565b6020026020010151600001516001600160a01b031684838151811062006336576200633662008a30565b6020026020010151600001516001600160a01b03161115620063d357600084838151811062006369576200636962008a30565b6020026020010151905084828151811062006388576200638862008a30565b6020026020010151858481518110620063a557620063a562008a30565b602002602001018190525080858381518110620063c657620063c662008a30565b6020026020010181905250505b80620063df8162009341565b915050620062ed565b5080620063f58162009341565b915050620062d1565b5090919050565b801515821515146200470a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620064979060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262006502576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062006539565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b6040516200654891906200957a565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381620065b3576040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250620065ea565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620046f89190620095cc565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000826200142d565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200142d565b6002820180546001810182556000918252602082206001600160a01b038416910155826200142d565b6200470a8282620066b9565b6000620066b28262006b8d565b5092915050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200672c57602002820191906000526020600020905b81548152602001906001019080831162006717575b50505050509050600083620067418362006cdb565b6040516020016200675492919062008e0f565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a168352815292812091945090929091620067c09186918891016200960a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620067fb57620067f98762006d88565b505b6001600160a01b0385166000908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905190918391620068549187918991016200960a565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200689b919062008e59565b600060405180830381855afa9150503d8060008114620068d8576040519150601f19603f3d011682016040523d82523d6000602084013e620068dd565b606091505b509150620068fa905081620068f488602062008b04565b62006d95565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200697a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069a0919062008a5f565b905080821462006a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000b83565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562006afc57600080fd5b505af115801562006b11573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562006b7960028b016000620080f5565b896004016000905550505050505050505050565b6000808260405160200162006ba3919062008e59565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562006c25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c4b919062008def565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062006ca29085908790600401620094b8565b600060405180830381600087803b15801562006cbd57600080fd5b505af115801562006cd2573d6000803e3d6000fd5b50505050915091565b606060008251602062006cef919062008b04565b67ffffffffffffffff81111562006d0a5762006d0a6200821d565b6040519080825280601f01601f19166020018201604052801562006d35576020820181803683370190505b50905060005b8351811015620066b257600084828151811062006d5c5762006d5c62008a30565b60200260200101519050808260200260200184015250808062006d7f9062009341565b91505062006d3b565b6000620025df8262006e37565b6000806000602085511162006dac57845162006daf565b60205b905060005b8181101562006e2d5762006dca81600862008b04565b8662006dd7838862008e97565b8151811062006dea5762006dea62008a30565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006e248162009341565b91505062006db4565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562006ea957602002820191906000526020600020905b81548152602001906001019080831162006e94575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062006f0d925085918791016200960a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562006fc4576001600160a01b0384166000908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162006f949185918791016200960a565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362006fd28362007f32565b60405160200162006fe592919062008e0f565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200705557600080fd5b505af11580156200706a573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200708b919062008e59565b600060405180830381855afa9150503d8060008114620070c8576040519150601f19603f3d011682016040523d82523d6000602084013e620070cd565b606091505b509150620070ea905081620070e487602062008b04565b62007fdf565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562007165573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200718f9190810190620096a8565b5090508051600103620075c15760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620071e757620071e762008a30565b60200260200101516040518363ffffffff1660e01b8152600401620072219291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200723f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007265919062008a5f565b905080620072d0577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58883600081518110620072a557620072a562008a30565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620073ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000b83565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620073e59291906200960a565b604051602081830303815290604052805190602001208560008151811062007411576200741162008a30565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062007483576200748362008a30565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c1683528452808220905192939092620074e6918a918c91016200960a565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162007568918a918c91016200960a565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555062007d2a565b60018151111562007c9f5760005b815181101562007c985760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062007623576200762362008a30565b60200260200101516040518363ffffffff1660e01b81526004016200765d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200767b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076a1919062008a5f565b9050806200770b577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620076e057620076e062008a30565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062007753576200775362008a30565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b158015620077e357600080fd5b505af1158015620077f8573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200781a919062008e59565b600060405180830381855afa9150503d806000811462007857576040519150601f19603f3d011682016040523d82523d6000602084013e6200785c565b606091505b5090925090506200787481620070e48b602062008b04565b9550818015620078a357507f133700000000000000000000000000000000000000000000000000000000000086145b1562007bad577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620078e19291906200960a565b604051602081830303815290604052805190602001208888815181106200790c576200790c62008a30565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18484815181106200797d576200797d62008a30565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f1683528452808220905192939092620079e0918d918f91016200960a565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162007a979291906200960a565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007b1a5762007b1a62008a30565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007b8b57600080fd5b505af115801562007ba0573d6000803e3d6000fd5b5050505050505062007c98565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007bf55762007bf562008a30565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007c6657600080fd5b505af115801562007c7b573d6000803e3d6000fd5b50505050505050808062007c8f9062009341565b915050620075cf565b5062007d2a565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000b83565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162007d869188918a91016200960a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000b83565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562007ea160028a016000620080f5565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162007eff9188918a91016200960a565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062007f46919062008b04565b67ffffffffffffffff81111562007f615762007f616200821d565b6040519080825280601f01601f19166020018201604052801562007f8c576020820181803683370190505b50905060005b8351811015620066b257600084828151811062007fb35762007fb362008a30565b60200260200101519050808260200260200184015250808062007fd69062009341565b91505062007f92565b6000806000602085511162007ff657845162007ff9565b60205b905060005b8181101562006e2d576200801481600862008b04565b8662008021838862008e97565b8151811062008034576200803462008a30565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200806e8162009341565b91505062007ffe565b610fe9806200971483390190565b610235806200a6fd83390190565b61237a806200a93283390190565b61013c806200ccac83390190565b610809806200cde883390190565b610200806200d5f183390190565b611246806200d7f183390190565b610d06806200ea3783390190565b6153a2806200f73d83390190565b5080546000825590600052602060002090810190620047d891905b8082111562008126576000815560010162008110565b5090565b6000602082840312156200813d57600080fd5b5035919050565b60005b838110156200816157818101518382015260200162008147565b50506000910152565b600081518084526200818481602086016020860162008144565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200289160608301846200816a565b600081518084526020808501945080840160005b83811015620081fd5781516001600160a01b031687529582019590820190600101620081d6565b509495945050505050565b6020815260006200142d6020830184620081c2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200827357620082736200821d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715620082a557620082a56200821d565b604052919050565b600067ffffffffffffffff821115620082ca57620082ca6200821d565b5060051b60200190565b600082601f830112620082e657600080fd5b81356020620082ff620082f983620082ad565b62008279565b82815260059290921b840181019181810190868411156200831f57600080fd5b8286015b848110156200833c578035835291830191830162008323565b509695505050505050565b6000602082840312156200835a57600080fd5b813567ffffffffffffffff8111156200837257600080fd5b6200838084828501620082d4565b949350505050565b600080600080600060a08688031215620083a157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080600060608486031215620083da57600080fd5b83359250602084013567ffffffffffffffff811115620083f957600080fd5b6200840786828701620082d4565b925050604084013590509250925092565b600080604083850312156200842c57600080fd5b50508035926020909101359150565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008519578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620085035783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620084bf565b50978a0197955050509187019160010162008463565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200859f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200858c8583516200816a565b945092850192908501906001016200854f565b5092979650505050505050565b60008060408385031215620085c057600080fd5b823567ffffffffffffffff811115620085d857600080fd5b620085e685828601620082d4565b95602094909401359450505050565b600081518084526020808501945080840160005b83811015620081fd5781518752958201959082019060010162008609565b6020815260006200142d6020830184620085f5565b6000806000606084860312156200865257600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114620047d857600080fd5b8015158114620047d857600080fd5b600080600080600080600080610100898b031215620086ac57600080fd5b8835620086b98162008669565b97506020890135620086cb8162008669565b96506040890135620086dd8162008669565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356200870b816200867f565b809150509295985092959890939650565b60008060008060008060c087890312156200873657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b602081526001600160a01b03825116602082015260006020830151606060408401526200879160808401826200816a565b9050604084015160608401528091505092915050565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200838060608501826200816a565b6001600160a01b0385168152608060208201526000620087ff6080830186620087a7565b82810360408401526200881381866200816a565b90508281036060840152620062c18185620085f5565b80516200272c8162008669565b805163ffffffff811681146200272c57600080fd5b80516200272c816200867f565b600061018082840312156200886c57600080fd5b620088766200824c565b9050620088838262008829565b8152620088936020830162008829565b6020820152620088a66040830162008829565b60408201526060820151606082015260808201516080820152620088cd60a0830162008836565b60a082015260c082015160c082015260e082015160e0820152610100808301518183015250610120620089028184016200884b565b9082015261014082810151908201526101609182015191810191909152919050565b6000806101a083850312156200893957600080fd5b62008945848462008858565b915061018083015167ffffffffffffffff808211156200896457600080fd5b818501915085601f8301126200897957600080fd5b8151818111156200898e576200898e6200821d565b620089a36020601f19601f8401160162008279565b9150808252866020828501011115620089bb57600080fd5b620089ce81602084016020860162008144565b5080925050509250929050565b600181811c90821680620089f057607f821691505b60208210810362008a2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121562008a7257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262008ae95762008ae962008a79565b500490565b81810381811115620025df57620025df62008aa8565b8082028115828204841417620025df57620025df62008aa8565b8281526040602082015260006200838060408301846200816a565b60006020828403121562008b4c57600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146200142d57600080fd5b6020815260006200142d60208301846200816a565b6020815262008bad6020820183516001600160a01b03169052565b6000602083015162008bca60408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e083015161010062008c1e8185018315159052565b80850151915050610140610120818186015262008c406101608601846200816a565b9501519301929092525090919050565b60006001600160a01b03808816835280871660208401525084604083015260a0606083015262008c8460a08301856200816a565b828103608084015262008c9881856200816a565b98975050505050505050565b6000610180828403121562008cb857600080fd5b6200142d838362008858565b60006102606001600160a01b03808c168452808b166020850152508860408401528760608401528660808401528060a084015262008d05818401876200816a565b905082810360c084015262008d1b81866200816a565b91505062008d3560e0830184516001600160a01b03169052565b602083015161010062008d52818501836001600160a01b03169052565b6040850151915061012062008d71818601846001600160a01b03169052565b60608601516101408681019190915260808701516101608088019190915260a088015163ffffffff1661018088015260c08801516101a088015260e08801516101c0880152928701516101e0870152908601511515610200860152850151610220850152909301516102409092019190915298975050505050505050565b60006020828403121562008e0257600080fd5b81516200142d8162008669565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162008e4b81600485016020870162008144565b919091016004019392505050565b6000825162008e6d81846020870162008144565b9190910192915050565b60006020828403121562008e8a57600080fd5b81516200142d816200867f565b80820180821115620025df57620025df62008aa8565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b1681526000825162008eec81601485016020870162008144565b919091016014019392505050565b6000826060808201846000805b600381101562008fa2578584038952825180518086526020918201918087019190600582901b88018101865b8381101562008f8a57898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c905262008f768c8401826200816a565b968401969584019592505060010162008f33565b509c81019c9750959095019450505060010162008f07565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b8381101562008ff55781516001600160a01b03168552938201939082019060010162008fce565b5050868303818801526200900a838b620085f5565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b83811015620090e757601f198884030185528151610160815185528782015188860152888201516200906c8a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e080830151908601526101008083015190860152610120808301519086015261014091820151918501819052620090d2818601836200816a565b96880196945050509085019060010162009030565b505089810360608b0152620090fd818c62008efa565b9e9d5050505050505050505050505050565b6040815260006200914d60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200914d60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b604081526000620091d760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620091d760408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811062009293577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c6020850152816040850152620092c38285018d6200816a565b9250620092d4606085018c6200925b565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200932281846020880162008144565b8351908301906200933881836020880162008144565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362009375576200937562008aa8565b5060010190565b60006101406001600160a01b03808e1684528c6020850152816040850152620093a88285018d6200816a565b9150620093b9606085018c6200925b565b8960808501528860a08501528760c085015280871660e085015280861661010085015250828103610120840152620093f281856200816a565b9d9c50505050505050505050505050565b6020815260006200142d6020830184620087a7565b6040815260006200942d6040830185620087a7565b905082151560208301529392505050565b6000806000606084860312156200945457600080fd5b835160ff811681146200946657600080fd5b602085015160409095015190969495509392505050565b6000826200948f576200948f62008a79565b500690565b604081526000620094a960408301856200816a565b90508260208301529392505050565b6001600160a01b03831681526040602082015260006200838060408301846200816a565b6000610100808352620094f28184018b620081c2565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200956a60608301856200816a565b9050826040830152949350505050565b604081526000620095b860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200838081856200816a565b604081526000620095b860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b825160009082906020808701845b83811015620096365781518552938201939082019060010162009618565b5050948252509092019392505050565b600082601f8301126200965857600080fd5b815160206200966b620082f983620082ad565b82815260059290921b840181019181810190868411156200968b57600080fd5b8286015b848110156200833c57805183529183019183016200968f565b60008060408385031215620096bc57600080fd5b825167ffffffffffffffff80821115620096d557600080fd5b620096e38683870162009646565b93506020850151915080821115620096fa57600080fd5b50620097098582860162009646565b915050925092905056fe608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630d1003ee14610030575b600080fd5b61004361003e3660046100cc565b610055565b60405190815260200160405180910390f35b60008180602001905181019061006b91906101c6565b95945050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461009857600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156100e257600080fd5b843593506100f260208601610074565b925061010060408601610074565b9150606085013567ffffffffffffffff8082111561011d57600080fd5b818701915087601f83011261013157600080fd5b8135818111156101435761014361009d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101895761018961009d565b816040528281528a60208487010111156101a257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156101d857600080fd5b505191905056fea2646970667358221220a744e3bd664d4e8a69d6098163a5110d3a5122548326ec863f0fb1983fc5d0d764736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a264697066735822122091477a440e757beee4c56a30ae1ddc21411a44b7f27013106b271cc3651e024564736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"497:13097:109:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:30;;;;;;;;;;;497:13097:109;;;;;;;;;;1168:10:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:116;:22;;-1:-1:-1;;;;;;1156:22:116;-1:-1:-1;;;;;1156:22:116;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:116;:32;;-1:-1:-1;;;;;;1188:32:116;-1:-1:-1;;;;;1188:32:116;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:116;:44;;-1:-1:-1;;;;;;1230:44:116;-1:-1:-1;;;;;1230:44:116;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:116;:42;;-1:-1:-1;;;;;;1323:42:116;-1:-1:-1;;;;;1323:42:116;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:116;:27;;-1:-1:-1;;;;;;1375:27:116;-1:-1:-1;;;;;1375:27:116;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:116;:37;;-1:-1:-1;;;;;;1412:37:116;-1:-1:-1;;;;;1412:37:116;;;;;;;;;;875:30:117;;;;;:::i;:::-;317:2:122;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:122;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:122;501:19;;494:33;559:3;544:19;875:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:117;:56;;-1:-1:-1;;;;;;851:56:117;-1:-1:-1;;;;;851:56:117;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:122;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:122;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:122;1061:19;;1054:33;1119:3;1104:19;941:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:117;:56;;-1:-1:-1;;;;;;917:56:117;-1:-1:-1;;;;;917:56:117;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:122;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:122;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:122;1621:19;;1614:33;1679:3;1664:19;1007:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:117;:56;;-1:-1:-1;;;;;;983:56:117;-1:-1:-1;;;;;983:56:117;;;;;;;;;;497:13097:109;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:122:-;497:13097:109;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620003255760003560e01c806385226c8111620001b1578063cf06c7b711620000f5578063dfe274a911620000a3578063f699b9a1116200007a578063f699b9a1146200067b578063fa7626d41462000692578063fbfa77cf14620006a057600080fd5b8063dfe274a91462000646578063e20c9f71146200065a578063e27d5153146200066457600080fd5b8063d21220a711620000d8578063d21220a71462000604578063d4aec6641462000618578063dd1d2599146200062f57600080fd5b8063cf06c7b714620005d6578063cf30a7d314620005ed57600080fd5b8063b62654fb116200015f578063ba414fa61162000136578063ba414fa614620005a4578063c45a015514620005ae578063c80916d414620005c257600080fd5b8063b62654fb1462000560578063b716db661462000574578063b8616195146200057e57600080fd5b80639fbcc9ad11620001945780639fbcc9ad146200052e578063ad9b04751462000542578063b5508aa9146200055657600080fd5b806385226c81146200050b578063916a17c6146200052457600080fd5b806336ccd34211620002795780636253089111620002275780637d499aa411620001fe5780637d499aa414620004cc5780638099957e14620004e05780638406c07914620004f757600080fd5b806362530891146200048557806366d9a9a0146200049c5780637b07ac8314620004b557600080fd5b80633f7286f4116200025c5780633f7286f4146200043f57806351160630146200044957806358161a42146200045d57600080fd5b806336ccd342146200041e5780633e5e3c23146200043557600080fd5b80631ed7831c11620002d7578063294402cc11620002ba578063294402cc14620003da5780632e08d60214620003ee578063329696ac146200041457600080fd5b80631ed7831c14620003ad57806325be124e14620003c657600080fd5b80630dfe1681116200030c5780630dfe168114620003675780630ef28fec146200037b578063151bcd2c146200038557600080fd5b80630a9254e4146200032a5780630c8548f51462000336575b600080fd5b62000334620006b4565b005b6033546200034a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6021546200034a906001600160a01b031681565b6200033462000788565b6200039c620003963660046200812a565b620009d2565b6040516200035e9392919062008198565b620003b762000a8f565b6040516200035e919062008208565b6023546200034a906001600160a01b031681565b601f546200034a906001600160a01b031681565b62000405620003ff36600462008347565b62000af3565b6040519081526020016200035e565b6200033462000bcf565b620003346200042f36600462008388565b62000cdd565b620003b76200131d565b620003b76200137f565b6025546200034a906001600160a01b031681565b620004746200046e366004620083c4565b620013e1565b60405190151581526020016200035e565b620003346200049636600462008418565b62001434565b620004a662001754565b6040516200035e91906200843b565b62000334620004c636600462008388565b6200185c565b6032546200034a906001600160a01b031681565b62000334620004f136600462008418565b62001e50565b602a546200034a906001600160a01b031681565b620005156200201e565b6040516200035e919062008528565b620004a6620020f8565b601e546200034a906001600160a01b031681565b6031546200034a906001600160a01b031681565b62000515620021f7565b601b546200034a906001600160a01b031681565b62000334620022d1565b620005956200058f366004620085ac565b6200240d565b6040516200035e919062008627565b62000474620025e5565b601c546200034a906001600160a01b031681565b601d546200034a906001600160a01b031681565b62000405620005e73660046200812a565b62002731565b62000334620005fe3660046200863c565b6200289a565b6022546200034a906001600160a01b031681565b62000334620006293660046200868e565b62002d01565b620004056200064036600462008418565b6200318f565b6020546200034a906001600160a01b031681565b620003b7620031bf565b62000405620006753660046200812a565b62003221565b620003346200068c3660046200871c565b6200324e565b600054620004749060ff1681565b6024546200034a906001600160a01b031681565b620006be620034bb565b604051620006cc9062008077565b604051809103906000f080158015620006e9573d6000803e3d6000fd5b50603a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620007309062008085565b604051809103906000f0801580156200074d573d6000803e3d6000fd5b50603b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60408051606081018252603b546001600160a01b031681528151600160208083019190915260009390830191016040516020818303038152906040528152602001603281525090506000620007fe82604051602001620007e9919062008760565b6040516020818303038152906040526200383b565b6031548151606083015192935060009262000825926001600160a01b03169185916200393c565b8251603154608085015192935062000849926001600160a01b039091169062003b2b565b60a08201516040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620008b657600080fd5b505af1158015620008cb573d6000803e3d6000fd5b5050603454603154604080516064602080830182905283518084039091018152600083850181815260608501958690527f26e0a1960000000000000000000000000000000000000000000000000000000090955297508796506001600160a01b03958616956326e0a1969562000947959116938a9301620087db565b600060405180830381865afa15801562000965573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200098f919081019062008924565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152939550919350620009cb9216908484600062003b3f565b5050505050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000a0690620089db565b80601f016020809104026020016040519081016040528092919081815260200182805462000a3490620089db565b801562000a855780601f1062000a595761010080835404028352916020019162000a85565b820191906000526020600020905b81548152906001019060200180831162000a6757829003601f168201915b5050505050905083565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000ae957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000aca575b5050505050905090565b6000600182511162000b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60018251111562000baa5762000ba2826200446c565b915062000b8c565b8160008151811062000bc05762000bc062008a30565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000cdb926001600160a01b03169163f698da259160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5b919062008a5f565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000caf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd5919062008a5f565b620045f8565b565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000d4757600080fd5b505afa15801562000d5c573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528688106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000dc657600080fd5b505afa15801562000ddb573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062000e2a90506127107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908510600482015260240160006040518083038186803b15801562000e7a57600080fd5b505afa15801562000e8f573d6000803e3d6000fd5b5050505062000ea38160006127106200470e565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261271062000ece848262008aee565b62000eda908662008b04565b62000ee6919062008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815290861015600482015260240160006040518083038186803b15801562000f3757600080fd5b505afa15801562000f4c573d6000803e3d6000fd5b505060408051606081018252603b546001600160a01b031681528151602080820188905283518083038201815291840184528083019190915281830186905291519093506000925062000fa791620007e99185910162008760565b60a0810188905260c081018790526031548151606083015192935060009262000fdc926001600160a01b03169185916200393c565b6040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152600481018a9052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200104657600080fd5b505af11580156200105b573d6000803e3d6000fd5b5050835160315460808601516200108094509192506001600160a01b03169062003b2b565b60345460315460408051602081018a905260009384936001600160a01b03918216936326e0a1969392909116918791015b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b169091526200110593929160248101620087db565b600060405180830381865afa15801562001123573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200114d919081019062008924565b603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062001311937f1626ba7e00000000000000000000000000000000000000000000000000000000936001600160a01b0393841693631626ba7e9362001284938a93929091169163f698da259160048083019260209291908290030181865afa158015620011f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001218919062008a5f565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856040518363ffffffff1660e01b8152600401620012a492919062008b1e565b602060405180830381865afa158015620012c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e8919062008b39565b7fffffffff00000000000000000000000000000000000000000000000000000000161462004760565b50505050505050505050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000ae9576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000aca575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000ae9576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000aca575050505050905090565b81516000908290825b8181101562001426576200141b838783815181106200140d576200140d62008a30565b60200260200101516200318f565b9250600101620013ea565b5050841490505b9392505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528183106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200149a57600080fd5b505afa158015620014af573d6000803e3d6000fd5b505050506000620014cf604051806020016040528060008152506200383b565b60a081018390526040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200154057600080fd5b505af115801562001555573d6000803e3d6000fd5b5050604080518082018252600981527f746f6f206561726c79000000000000000000000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507f7e3346370000000000000000000000000000000000000000000000000000000091620015dd9187919060240162008b1e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620016519160040162008b7d565b600060405180830381600087803b1580156200166c57600080fd5b505af115801562001681573d6000803e3d6000fd5b5050603a546031546040516001600160a01b03928316945063b8296fc493509116906000908190620016b890879060200162008b92565b60408051601f19818403018152828252670de0b6b3a7640000602084015291016040516020818303038152906040526040518663ffffffff1660e01b81526004016200170995949392919062008c50565b61018060405180830381865afa15801562001728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200174e919062008ca4565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620018535760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200183a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620017e65790505b5050505050815250508152602001906001019062001778565b50505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620018c657600080fd5b505afa158015620018db573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528688106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200194557600080fd5b505afa1580156200195a573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e5629150620019a990506127107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908510600482015260240160006040518083038186803b158015620019f957600080fd5b505afa15801562001a0e573d6000803e3d6000fd5b5050505062001a228160006127106200470e565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261271062001a4d848262008aee565b62001a59908662008b04565b62001a65919062008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815290861015600482015260240160006040518083038186803b15801562001ab657600080fd5b505afa15801562001acb573d6000803e3d6000fd5b505060408051606081018252603b546001600160a01b031681528151602080820188905283518083038201815291840184528083019190915281830186905291519093506000925062001b2691620007e99185910162008760565b60a081018890526040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101899052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562001b9757600080fd5b505af115801562001bac573d6000803e3d6000fd5b50508251603154608085015162001bd194509192506001600160a01b03169062003b2b565b603a546031546040516000926001600160a01b039081169263b8296fc4929116908490819062001c0690889060200162008b92565b60408051601f19818403018152828252602083018e905291016040516020818303038152906040526040518663ffffffff1660e01b815260040162001c5095949392919062008c50565b61018060405180830381865afa15801562001c6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c95919062008ca4565b90506000603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001ced573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d13919062008a5f565b603a546031549192506001600160a01b03908116916314a2a7849116600062001da38686601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856000801b8960405160200162001dbb919062008b92565b6040516020818303038152906040528e60405160200162001dde91815260200190565b6040516020818303038152906040528a6040518963ffffffff1660e01b815260040162001e1398979695949392919062008cc4565b60006040518083038186803b15801562001e2c57600080fd5b505afa15801562001e41573d6000803e3d6000fd5b50505050505050505050505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528183106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001eb657600080fd5b505afa15801562001ecb573d6000803e3d6000fd5b50505050600062001eeb604051806020016040528060008152506200383b565b6080810183905260a08101516040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029162001f4d9160040190815260200190565b600060405180830381600087803b15801562001f6857600080fd5b505af115801562001f7d573d6000803e3d6000fd5b5050825160315462001f9d93509091506001600160a01b03168562003b2b565b604080518082018252601481527f62616c616e636520696e73756666696369656e7400000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620015dd9160240162008b7d565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620018535783829060005260206000200180546200206490620089db565b80601f01602080910402602001604051908101604052809291908181526020018280546200209290620089db565b8015620020e35780601f10620020b757610100808354040283529160200191620020e3565b820191906000526020600020905b815481529060010190602001808311620020c557829003601f168201915b50505050508152602001906001019062002042565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620018535760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021de57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200218a5790505b505050505081525050815260200190600101906200211c565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620018535783829060005260206000200180546200223d90620089db565b80601f01602080910402602001604051908101604052809291908181526020018280546200226b90620089db565b8015620022bc5780601f106200229057610100808354040283529160200191620022bc565b820191906000526020600020905b8154815290600101906020018083116200229e57829003601f168201915b5050505050815260200190600101906200221b565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000cdb946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa1580156200234d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002373919062008a5f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620023d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023fb919062008def565b6034546001600160a01b0316620047db565b60606001835111620024a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000b83565b6000620024af845162002731565b67ffffffffffffffff811115620024ca57620024ca6200821d565b604051908082528060200260200182016040528015620024f4578160200160208202803683370190505b50905060005b600185511115620025db5783600116600103620025585784600185038151811062002529576200252962008a30565b602002602001015182828151811062002546576200254662008a30565b602002602001018181525050620025bf565b845184600101036200257d576000801b82828151811062002546576200254662008a30565b84846001018151811062002595576200259562008a30565b6020026020010151828281518110620025b257620025b262008a30565b6020026020010181815250505b600101600284049350620025d3856200446c565b9450620024fa565b5090505b92915050565b60008054610100900460ff1615620026065750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200272c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620026ae917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162008e0f565b60408051601f1981840301815290829052620026ca9162008e59565b6000604051808303816000865af19150503d806000811462002709576040519150601f19603f3d011682016040523d82523d6000602084013e6200270e565b606091505b509150508080602001905181019062002728919062008e77565b9150505b919050565b6000600182116200274457506000919050565b60008270010000000000000000000000000000000081106200277557608093841c9362002772908362008e97565b91505b6801000000000000000084106200279b57604093841c9362002798908362008e97565b91505b6401000000008410620027bd57602093841c93620027ba908362008e97565b91505b620100008410620027dd57601093841c93620027da908362008e97565b91505b6101008410620027fc57600893841c93620027f9908362008e97565b91505b601084106200281a57600493841c9362002817908362008e97565b91505b600484106200283857600293841c9362002835908362008e97565b91505b6002841062002851576200284e60018362008e97565b91505b600081620028628119600162008e97565b1690508181148015620028755750600083115b15620028845750909392505050565b6200289183600162008e97565b95945050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562620028e26127107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908510600482015260240160006040518083038186803b1580156200293257600080fd5b505afa15801562002947573d6000803e3d6000fd5b505050506200295b8160006127106200470e565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261271062002986848262008aee565b62002992908662008b04565b6200299e919062008ad7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908610600482015260240160006040518083038186803b158015620029ee57600080fd5b505afa15801562002a03573d6000803e3d6000fd5b505060408051606081018252603b546001600160a01b031681528151602080820188905283518083038201815291840184528083019190915281830186905291519093506000925062002a5e91620007e99185910162008760565b60a08101516040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029162002ab99160040190815260200190565b600060405180830381600087803b15801562002ad457600080fd5b505af115801562002ae9573d6000803e3d6000fd5b50508251603154608085015162002b0e94509192506001600160a01b03169062003b2b565b604080518082018252601481527f707269636520636865636b6572206661696c656400000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fd05f3065000000000000000000000000000000000000000000000000000000009162002b8f9160240162008b7d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262002c039160040162008b7d565b600060405180830381600087803b15801562002c1e57600080fd5b505af115801562002c33573d6000803e3d6000fd5b5050603a546031546040516001600160a01b03928316945063b8296fc49350911690600090819062002c6a90879060200162008b92565b60408051601f19818403018152828252602083018d905291016040516020818303038152906040526040518663ffffffff1660e01b815260040162002cb495949392919062008c50565b61018060405180830381865afa15801562002cd3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cf9919062008ca4565b505050505050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002d6b57600080fd5b505afa15801562002d80573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528486106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002dea57600080fd5b505afa15801562002dff573d6000803e3d6000fd5b505060408051610140810182526021546001600160a01b0390811682528c8116602080840191909152908b1682840152606082018a905260006080830181905260a0830189815260c0840189905287151560e0850152845192830185529082526101008301919091527f53e54576d72189ffa98650841aeb896fa1a6ac9c5f315c73cd4c0fafecfab6c86101208301525191517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101929092529250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063e5d6bf0290602401600060405180830381600087803b15801562002efa57600080fd5b505af115801562002f0f573d6000803e3d6000fd5b50508251603154608085015162002f3494509192506001600160a01b03169062003b2b565b603a546040516000916001600160a01b03169063b8296fc4908b908490819062002f6390889060200162008b92565b60408051601f19818403018152828252602083018e905291016040516020818303038152906040526040518663ffffffff1660e01b815260040162002fad95949392919062008c50565b61018060405180830381865afa15801562002fcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ff2919062008ca4565b60408051610180810182526021546001600160a01b0390811682528d81166020808401919091528c821683850152606083018c9052608083018b905263ffffffff891660a08401527f53e54576d72189ffa98650841aeb896fa1a6ac9c5f315c73cd4c0fafecfab6c860c0840152600060e08401527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008401528715156101208401527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140840181905261016084015260255484517ff698da2500000000000000000000000000000000000000000000000000000000815294519596509294620031829462003129948894169263f698da25926004808401938290030181865afa158015620011f2573d6000803e3d6000fd5b62000cd583602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011f2573d6000803e3d6000fd5b5050505050505050505050565b60008183108015620031a9578360005282602052620031b2565b82600052836020525b5050604060002092915050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000ae9576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000aca575050505050905090565b6000808219600101831683145b83156200324657600193841c9391909101906200322e565b900392915050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620032b857600080fd5b505afa158015620032cd573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528688106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200333757600080fd5b505afa1580156200334c573d6000803e3d6000fd5b505050506200335d8686866200470e565b95506200338c82847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200470e565b91506000620033aa604051806020016040528060008152506200383b565b60a0810187905260c081018690526080810185905260315481516060830151929350600092620033e6926001600160a01b03169185916200393c565b6040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152600481018a9052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200345057600080fd5b505af115801562003465573d6000803e3d6000fd5b505083516031546200348593509091506001600160a01b03168662003b2b565b603454603154604080516020810187905260009384936001600160a01b03918216936326e0a196939290911691879101620010b1565b620034c5620048ed565b6025546040516001600160a01b0390911690620034e29062008093565b6001600160a01b039091168152602001604051809103906000f0801580156200350f573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200369794938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa158015620035d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035f6919062008a5f565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200368062004caf565b6031546001600160a01b0316949392919062004d89565b604051620036a590620080a1565b604051809103906000f080158015620036c2573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200370990620080af565b604051809103906000f08015801562003726573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200376d90620080bd565b604051809103906000f0801580156200378a573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603454604051911690620037d390620080cb565b6001600160a01b039091168152602001604051809103906000f08015801562003800573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082015261012081019190915260408051610140810182526021546001600160a01b03908116825260225416602082015260009181019190915268056bc75e2d631000006060820152680ad78ebc5ac6200000608082015260a08101620038e9426201518062008e97565b8152602001620038fd426202a30062008e97565b81526020016000151581526020018381526020017f53e54576d72189ffa98650841aeb896fa1a6ac9c5f315c73cd4c0fafecfab6c88152509050919050565b60408051606080820183526000808352602083015291810191909152603a54604051620039ea916001600160a01b0316907fc2376e7ea518b4e08287336e2b7d4e3507de3fcc71e9ba0f0b95d0571389c1cb906200399f90889060200162008b92565b60408051601f19818403018152606080840183526000808552602085810191909152938301819052825190810183526001600160a01b03959095168552918401929092529082015290565b9050620039fa8582600062004fb0565b62003a0783868462003b2b565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003a7657600080fd5b505af115801562003a8b573d6000803e3d6000fd5b5050602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052908616925063095ea7b391506044016020604051808303816000875af115801562003afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b22919062008e77565b50949350505050565b62003b3a83838360006200525c565b505050565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050600062003c9a62003c9283602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011f2573d6000803e3d6000fd5b8790620054f3565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003d0f57600080fd5b505af115801562003d24573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af115801562003d9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dc2919062008e77565b5060408051600280825260608201835260009260208301908036833701905050905085600001518160008151811062003dff5762003dff62008a30565b60200260200101906001600160a01b031690816001600160a01b03168152505085602001518160018151811062003e3a5762003e3a62008a30565b6001600160a01b0392909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050905083606001518160008151811062003e905762003e9062008a30565b60200260200101818152505083608001518160018151811062003eb75762003eb762008a30565b602090810291909101015260408051600280825260608201909252600091816020015b62003f4a604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b81526020019060019003908162003eda579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e00151815260200162003fd28a60026200561d565b8152602001896060015181526020018b8960405160200162003ff692919062008ead565b604051602081830303815290604052815250816000815181106200401e576200401e62008a30565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e001518152602001620040988760006200561d565b8152602001866060015181526020018581525081600181518110620040c157620040c162008a30565b602002602001018190525060006040518060600160405280600067ffffffffffffffff811115620040f657620040f66200821d565b6040519080825280602002602001820160405280156200414557816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620041155790505b50815260200160006040519080825280602002602001820160405280156200419c57816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200416c5790505b5081526020016000604051908082528060200260200182016040528015620041f357816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620041c35790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200426c57600080fd5b505af115801562004281573d6000803e3d6000fd5b5050507fffffffff000000000000000000000000000000000000000000000000000000008816905062004339576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b90620042ff90879087908790879060040162008faf565b600060405180830381600087803b1580156200431a57600080fd5b505af11580156200432f573d6000803e3d6000fd5b5050505062003182565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620043c157600080fd5b505af1158015620043d6573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b91506200442b90879087908790879060040162008faf565b600060405180830381600087803b1580156200444657600080fd5b505af11580156200445b573d6000803e3d6000fd5b505050505050505050505050505050565b6060806000835190508060011660010362004529576002810460010167ffffffffffffffff811115620044a357620044a36200821d565b604051908082528060200260200182016040528015620044cd578160200160208202803683370190505b509150620044fe846001830381518110620044ec57620044ec62008a30565b60200260200101516000801b6200318f565b8260018451038151811062004517576200451762008a30565b60200260200101818152505062004576565b6002810467ffffffffffffffff8111156200454857620045486200821d565b60405190808252806020026020018201604052801562004572578160200160208202803683370190505b5091505b6000805b60018303811015620045ee57620045bf8682815181106200459f576200459f62008a30565b60200260200101518783600101815181106200140d576200140d62008a30565b848381518110620045d457620045d462008a30565b60209081029190910101526001909101906002016200457a565b5091949350505050565b8082146200470a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620046869060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620046bf91906200910f565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620046f891906200915b565b60405180910390a16200470a6200576a565b5050565b60006200471d848484620058b1565b90506200142d6040518060400160405280600c81526020017f426f756e6420526573756c7400000000000000000000000000000000000000008152508262005b18565b80620047d8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620047c69060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620047d86200576a565b50565b806001600160a01b0316826001600160a01b0316146200470a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200487b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620048b4919062009199565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620046f89190620091ee565b620048f762005be6565b620049376040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062006042565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620049ba9062006042565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c0000000000000000000000000000000000000000000000000000009181019190915262004a3d9062006042565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462004a9c929182169116683635c9adc5dea0000062003b2b565b602254602d5462004ac4916001600160a01b039081169116683635c9adc5dea0000062003b2b565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062004b0a5762004b0a62008a30565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062004b3e5762004b3e62008a30565b6001600160a01b039283166020918202929092010152602f5482519116908290600290811062004b725762004b7262008a30565b6001600160a01b039283166020918202929092010152601c54601b54601e5462004bac9392831692918216918591600291166000620061c8565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462004c049392831692918216918591600291166001620061c8565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462004c5b93928316929182169185916002911681620061c8565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602154603154620047d8929182169116683635c9adc5dea0000062003b2b565b604080516002808252606082810190935260009190816020015b604080518082019091526000808252602082015281526020019060019003908162004cc957505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062004d2a5762004d2a62008a30565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062004d735762004d7362008a30565b6020026020010181905250620025df81620062cc565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004dca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004df0919062008a5f565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b815260040162004e379a9998979695949392919062009297565b602060405180830381865afa15801562004e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e7b919062008a5f565b905062004e8883620062cc565b9250606060005b845181101562004f05578162004ecb8487848151811062004eb45762004eb462008a30565b6020026020010151620054f390919063ffffffff16565b60405160200162004ede9291906200930e565b6040516020818303038152906040529150808062004efc9062009341565b91505062004e8f565b50886001600160a01b0316636a7612028989898960008060008060008b60405160200162004f34919062008e59565b6040516020818303038152906040526040518b63ffffffff1660e01b815260040162004f6a9a999897969594939291906200937c565b6020604051808303816000875af115801562004f8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001311919062008e77565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200501f57600080fd5b505af115801562005034573d6000803e3d6000fd5b50505050801562005118576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620050bb57600080fd5b505af1158015620050d0573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516200510f919062009403565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062005165908590859060040162009418565b600060405180830381600087803b1580156200518057600080fd5b505af115801562005195573d6000803e3d6000fd5b505060345460405162003b3a93506001600160a01b039091169150636108c532908690620051c890879060200162009403565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401620052109291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200522e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005254919062008e77565b600162006405565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790529151600092871691620052e09162008e59565b6000604051808303816000865af19150503d80600081146200531f576040519150601f19603f3d011682016040523d82523d6000602084013e62005324565b606091505b5091505060008180602001905181019062005340919062008a5f565b905062005393846200538c87620053857f70a08231000000000000000000000000000000000000000000000000000000006200537e60058d620065f9565b9062006637565b9062006670565b9062006699565b821562002cf95760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b038916916200540c919062008e59565b6000604051808303816000865af19150503d80600081146200544b576040519150601f19603f3d011682016040523d82523d6000602084013e62005450565b606091505b509150506000818060200190518101906200546c919062008a5f565b905082861015620054975762005483868462008aee565b6200548f908262008aee565b9050620054b2565b620054a3838762008aee565b620054af908262008e97565b90505b620054e9816200538c7f18160ddd000000000000000000000000000000000000000000000000000000006200537e60058d620065f9565b5050505050505050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562005574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200559a91906200943e565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc8361010001510362005650576001175b8261012001511562005660576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632836101400151036200569657600817620056c7565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce83610140015103620056c757600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce83610160015103620056f8576010175b60018260038111156200570f576200570f6200922c565b036200571e57602017620025df565b60028260038111156200573557620057356200922c565b036200574457604017620025df565b60038260038111156200575b576200575b6200922c565b03620025df5760601792915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620058835760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200581e929160200162008e0f565b60408051601f19818403018152908290526200583a9162008e59565b6000604051808303816000865af19150503d806000811462005879576040519150601f19603f3d011682016040523d82523d6000602084013e6200587e565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60008183111562005945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840162000b83565b828410158015620059565750818411155b15620059645750826200142d565b600062005972848462008aee565b6200597f90600162008e97565b9050600385111580156200599257508481115b15620059ad57620059a4858562008e97565b9150506200142d565b620059da60037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008aee565b851015801562005a14575062005a11857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008aee565b81115b1562005a525762005a46857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62008aee565b620059a4908462008aee565b8285111562005ab457600062005a69848762008aee565b9050600062005a7983836200947d565b90508060000362005a90578493505050506200142d565b600162005a9e828862008e97565b62005aaa919062008aee565b9350505062005b10565b8385101562005b1057600062005acb868662008aee565b9050600062005adb83836200947d565b90508060000362005af2578593505050506200142d565b62005afe818662008aee565b62005b0b90600162008e97565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b0316838360405160240162005b4492919062009494565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc000000000000000000000000000000000000000000000000000000001790525162005ba9919062008e59565b600060405180830381855afa9150503d806000811462002cf9576040519150601f19603f3d011682016040523d82523d6000602084013e62002cf9565b62005c266040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062006042565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c76657200000000000000000000000000000000000000000000000000009181019190915262005ca99062006042565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262005d2c90620066a5565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062005d7590620080d9565b604051809103906000f08015801562005d92573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562005df657600080fd5b505af115801562005e0b573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062005e2e90620080e7565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562005e62573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562005eef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f15919062008def565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562005fb357600080fd5b505af115801562005fc8573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200602d57600080fd5b505af1158015620009cb573d6000803e3d6000fd5b60408051808201909152600080825260208201526000826040516020016200606b919062008e59565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620060f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006116919062008def565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200616d9084908890600401620094b8565b600060405180830381600087803b1580156200618857600080fd5b505af11580156200619d573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b88886000896000806000604051602401620062049796959493929190620094dc565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200627b9291879060040162009546565b6020604051808303816000875af11580156200629b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062c1919062008def565b979650505050505050565b606060005b8251811015620063fe576000620062ea82600162008e97565b90505b8351811015620063e8578381815181106200630c576200630c62008a30565b6020026020010151600001516001600160a01b031684838151811062006336576200633662008a30565b6020026020010151600001516001600160a01b03161115620063d357600084838151811062006369576200636962008a30565b6020026020010151905084828151811062006388576200638862008a30565b6020026020010151858481518110620063a557620063a562008a30565b602002602001018190525080858381518110620063c657620063c662008a30565b6020026020010181905250505b80620063df8162009341565b915050620062ed565b5080620063f58162009341565b915050620062d1565b5090919050565b801515821515146200470a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620064979060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262006502576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062006539565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b6040516200654891906200957a565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381620065b3576040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250620065ea565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620046f89190620095cc565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000826200142d565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200142d565b6002820180546001810182556000918252602082206001600160a01b038416910155826200142d565b6200470a8282620066b9565b6000620066b28262006b8d565b5092915050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200672c57602002820191906000526020600020905b81548152602001906001019080831162006717575b50505050509050600083620067418362006cdb565b6040516020016200675492919062008e0f565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a168352815292812091945090929091620067c09186918891016200960a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620067fb57620067f98762006d88565b505b6001600160a01b0385166000908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905190918391620068549187918991016200960a565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200689b919062008e59565b600060405180830381855afa9150503d8060008114620068d8576040519150601f19603f3d011682016040523d82523d6000602084013e620068dd565b606091505b509150620068fa905081620068f488602062008b04565b62006d95565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200697a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069a0919062008a5f565b905080821462006a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000b83565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562006afc57600080fd5b505af115801562006b11573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562006b7960028b016000620080f5565b896004016000905550505050505050505050565b6000808260405160200162006ba3919062008e59565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562006c25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c4b919062008def565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062006ca29085908790600401620094b8565b600060405180830381600087803b15801562006cbd57600080fd5b505af115801562006cd2573d6000803e3d6000fd5b50505050915091565b606060008251602062006cef919062008b04565b67ffffffffffffffff81111562006d0a5762006d0a6200821d565b6040519080825280601f01601f19166020018201604052801562006d35576020820181803683370190505b50905060005b8351811015620066b257600084828151811062006d5c5762006d5c62008a30565b60200260200101519050808260200260200184015250808062006d7f9062009341565b91505062006d3b565b6000620025df8262006e37565b6000806000602085511162006dac57845162006daf565b60205b905060005b8181101562006e2d5762006dca81600862008b04565b8662006dd7838862008e97565b8151811062006dea5762006dea62008a30565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006e248162009341565b91505062006db4565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562006ea957602002820191906000526020600020905b81548152602001906001019080831162006e94575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062006f0d925085918791016200960a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562006fc4576001600160a01b0384166000908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162006f949185918791016200960a565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362006fd28362007f32565b60405160200162006fe592919062008e0f565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200705557600080fd5b505af11580156200706a573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200708b919062008e59565b600060405180830381855afa9150503d8060008114620070c8576040519150601f19603f3d011682016040523d82523d6000602084013e620070cd565b606091505b509150620070ea905081620070e487602062008b04565b62007fdf565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562007165573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200718f9190810190620096a8565b5090508051600103620075c15760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620071e757620071e762008a30565b60200260200101516040518363ffffffff1660e01b8152600401620072219291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200723f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007265919062008a5f565b905080620072d0577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58883600081518110620072a557620072a562008a30565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620073ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000b83565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620073e59291906200960a565b604051602081830303815290604052805190602001208560008151811062007411576200741162008a30565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062007483576200748362008a30565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c1683528452808220905192939092620074e6918a918c91016200960a565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162007568918a918c91016200960a565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555062007d2a565b60018151111562007c9f5760005b815181101562007c985760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062007623576200762362008a30565b60200260200101516040518363ffffffff1660e01b81526004016200765d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200767b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076a1919062008a5f565b9050806200770b577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620076e057620076e062008a30565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062007753576200775362008a30565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b158015620077e357600080fd5b505af1158015620077f8573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200781a919062008e59565b600060405180830381855afa9150503d806000811462007857576040519150601f19603f3d011682016040523d82523d6000602084013e6200785c565b606091505b5090925090506200787481620070e48b602062008b04565b9550818015620078a357507f133700000000000000000000000000000000000000000000000000000000000086145b1562007bad577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620078e19291906200960a565b604051602081830303815290604052805190602001208888815181106200790c576200790c62008a30565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18484815181106200797d576200797d62008a30565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f1683528452808220905192939092620079e0918d918f91016200960a565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162007a979291906200960a565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007b1a5762007b1a62008a30565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007b8b57600080fd5b505af115801562007ba0573d6000803e3d6000fd5b5050505050505062007c98565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007bf55762007bf562008a30565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007c6657600080fd5b505af115801562007c7b573d6000803e3d6000fd5b50505050505050808062007c8f9062009341565b915050620075cf565b5062007d2a565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000b83565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162007d869188918a91016200960a565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000b83565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562007ea160028a016000620080f5565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162007eff9188918a91016200960a565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062007f46919062008b04565b67ffffffffffffffff81111562007f615762007f616200821d565b6040519080825280601f01601f19166020018201604052801562007f8c576020820181803683370190505b50905060005b8351811015620066b257600084828151811062007fb35762007fb362008a30565b60200260200101519050808260200260200184015250808062007fd69062009341565b91505062007f92565b6000806000602085511162007ff657845162007ff9565b60205b905060005b8181101562006e2d576200801481600862008b04565b8662008021838862008e97565b8151811062008034576200803462008a30565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200806e8162009341565b91505062007ffe565b610fe9806200971483390190565b610235806200a6fd83390190565b61237a806200a93283390190565b61013c806200ccac83390190565b610809806200cde883390190565b610200806200d5f183390190565b611246806200d7f183390190565b610d06806200ea3783390190565b6153a2806200f73d83390190565b5080546000825590600052602060002090810190620047d891905b8082111562008126576000815560010162008110565b5090565b6000602082840312156200813d57600080fd5b5035919050565b60005b838110156200816157818101518382015260200162008147565b50506000910152565b600081518084526200818481602086016020860162008144565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200289160608301846200816a565b600081518084526020808501945080840160005b83811015620081fd5781516001600160a01b031687529582019590820190600101620081d6565b509495945050505050565b6020815260006200142d6020830184620081c2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200827357620082736200821d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715620082a557620082a56200821d565b604052919050565b600067ffffffffffffffff821115620082ca57620082ca6200821d565b5060051b60200190565b600082601f830112620082e657600080fd5b81356020620082ff620082f983620082ad565b62008279565b82815260059290921b840181019181810190868411156200831f57600080fd5b8286015b848110156200833c578035835291830191830162008323565b509695505050505050565b6000602082840312156200835a57600080fd5b813567ffffffffffffffff8111156200837257600080fd5b6200838084828501620082d4565b949350505050565b600080600080600060a08688031215620083a157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080600060608486031215620083da57600080fd5b83359250602084013567ffffffffffffffff811115620083f957600080fd5b6200840786828701620082d4565b925050604084013590509250925092565b600080604083850312156200842c57600080fd5b50508035926020909101359150565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008519578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620085035783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620084bf565b50978a0197955050509187019160010162008463565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200859f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200858c8583516200816a565b945092850192908501906001016200854f565b5092979650505050505050565b60008060408385031215620085c057600080fd5b823567ffffffffffffffff811115620085d857600080fd5b620085e685828601620082d4565b95602094909401359450505050565b600081518084526020808501945080840160005b83811015620081fd5781518752958201959082019060010162008609565b6020815260006200142d6020830184620085f5565b6000806000606084860312156200865257600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114620047d857600080fd5b8015158114620047d857600080fd5b600080600080600080600080610100898b031215620086ac57600080fd5b8835620086b98162008669565b97506020890135620086cb8162008669565b96506040890135620086dd8162008669565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356200870b816200867f565b809150509295985092959890939650565b60008060008060008060c087890312156200873657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b602081526001600160a01b03825116602082015260006020830151606060408401526200879160808401826200816a565b9050604084015160608401528091505092915050565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200838060608501826200816a565b6001600160a01b0385168152608060208201526000620087ff6080830186620087a7565b82810360408401526200881381866200816a565b90508281036060840152620062c18185620085f5565b80516200272c8162008669565b805163ffffffff811681146200272c57600080fd5b80516200272c816200867f565b600061018082840312156200886c57600080fd5b620088766200824c565b9050620088838262008829565b8152620088936020830162008829565b6020820152620088a66040830162008829565b60408201526060820151606082015260808201516080820152620088cd60a0830162008836565b60a082015260c082015160c082015260e082015160e0820152610100808301518183015250610120620089028184016200884b565b9082015261014082810151908201526101609182015191810191909152919050565b6000806101a083850312156200893957600080fd5b62008945848462008858565b915061018083015167ffffffffffffffff808211156200896457600080fd5b818501915085601f8301126200897957600080fd5b8151818111156200898e576200898e6200821d565b620089a36020601f19601f8401160162008279565b9150808252866020828501011115620089bb57600080fd5b620089ce81602084016020860162008144565b5080925050509250929050565b600181811c90821680620089f057607f821691505b60208210810362008a2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121562008a7257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262008ae95762008ae962008a79565b500490565b81810381811115620025df57620025df62008aa8565b8082028115828204841417620025df57620025df62008aa8565b8281526040602082015260006200838060408301846200816a565b60006020828403121562008b4c57600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146200142d57600080fd5b6020815260006200142d60208301846200816a565b6020815262008bad6020820183516001600160a01b03169052565b6000602083015162008bca60408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e083015161010062008c1e8185018315159052565b80850151915050610140610120818186015262008c406101608601846200816a565b9501519301929092525090919050565b60006001600160a01b03808816835280871660208401525084604083015260a0606083015262008c8460a08301856200816a565b828103608084015262008c9881856200816a565b98975050505050505050565b6000610180828403121562008cb857600080fd5b6200142d838362008858565b60006102606001600160a01b03808c168452808b166020850152508860408401528760608401528660808401528060a084015262008d05818401876200816a565b905082810360c084015262008d1b81866200816a565b91505062008d3560e0830184516001600160a01b03169052565b602083015161010062008d52818501836001600160a01b03169052565b6040850151915061012062008d71818601846001600160a01b03169052565b60608601516101408681019190915260808701516101608088019190915260a088015163ffffffff1661018088015260c08801516101a088015260e08801516101c0880152928701516101e0870152908601511515610200860152850151610220850152909301516102409092019190915298975050505050505050565b60006020828403121562008e0257600080fd5b81516200142d8162008669565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162008e4b81600485016020870162008144565b919091016004019392505050565b6000825162008e6d81846020870162008144565b9190910192915050565b60006020828403121562008e8a57600080fd5b81516200142d816200867f565b80820180821115620025df57620025df62008aa8565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b1681526000825162008eec81601485016020870162008144565b919091016014019392505050565b6000826060808201846000805b600381101562008fa2578584038952825180518086526020918201918087019190600582901b88018101865b8381101562008f8a57898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c905262008f768c8401826200816a565b968401969584019592505060010162008f33565b509c81019c9750959095019450505060010162008f07565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b8381101562008ff55781516001600160a01b03168552938201939082019060010162008fce565b5050868303818801526200900a838b620085f5565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b83811015620090e757601f198884030185528151610160815185528782015188860152888201516200906c8a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e080830151908601526101008083015190860152610120808301519086015261014091820151918501819052620090d2818601836200816a565b96880196945050509085019060010162009030565b505089810360608b0152620090fd818c62008efa565b9e9d5050505050505050505050505050565b6040815260006200914d60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200914d60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b604081526000620091d760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620091d760408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811062009293577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c6020850152816040850152620092c38285018d6200816a565b9250620092d4606085018c6200925b565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200932281846020880162008144565b8351908301906200933881836020880162008144565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362009375576200937562008aa8565b5060010190565b60006101406001600160a01b03808e1684528c6020850152816040850152620093a88285018d6200816a565b9150620093b9606085018c6200925b565b8960808501528860a08501528760c085015280871660e085015280861661010085015250828103610120840152620093f281856200816a565b9d9c50505050505050505050505050565b6020815260006200142d6020830184620087a7565b6040815260006200942d6040830185620087a7565b905082151560208301529392505050565b6000806000606084860312156200945457600080fd5b835160ff811681146200946657600080fd5b602085015160409095015190969495509392505050565b6000826200948f576200948f62008a79565b500690565b604081526000620094a960408301856200816a565b90508260208301529392505050565b6001600160a01b03831681526040602082015260006200838060408301846200816a565b6000610100808352620094f28184018b620081c2565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200956a60608301856200816a565b9050826040830152949350505050565b604081526000620095b860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200838081856200816a565b604081526000620095b860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b825160009082906020808701845b83811015620096365781518552938201939082019060010162009618565b5050948252509092019392505050565b600082601f8301126200965857600080fd5b815160206200966b620082f983620082ad565b82815260059290921b840181019181810190868411156200968b57600080fd5b8286015b848110156200833c57805183529183019183016200968f565b60008060408385031215620096bc57600080fd5b825167ffffffffffffffff80821115620096d557600080fd5b620096e38683870162009646565b93506020850151915080821115620096fa57600080fd5b50620097098582860162009646565b915050925092905056fe608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630d1003ee14610030575b600080fd5b61004361003e3660046100cc565b610055565b60405190815260200160405180910390f35b60008180602001905181019061006b91906101c6565b95945050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461009857600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156100e257600080fd5b843593506100f260208601610074565b925061010060408601610074565b9150606085013567ffffffffffffffff8082111561011d57600080fd5b818701915087601f83011261013157600080fd5b8135818111156101435761014361009d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101895761018961009d565b816040528281528a60208487010111156101a257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156101d857600080fd5b505191905056fea2646970667358221220a744e3bd664d4e8a69d6098163a5110d3a5122548326ec863f0fb1983fc5d0d764736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a264697066735822122091477a440e757beee4c56a30ae1ddc21411a44b7f27013106b271cc3651e024564736f6c63430008130033","sourceMap":"497:13097:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;736:277;;;:::i;:::-;;595:17:106;;;;;-1:-1:-1;;;;;595:17:106;;;;;;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;595:17:106;;;;;;;;748:20:117;;;;;-1:-1:-1;;;;;748:20:117;;;11318:1040:109;;;:::i;1586:74:107:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2161:134:33:-;;;:::i;:::-;;;;;;;:::i;800:20:117:-;;;;;-1:-1:-1;;;;;800:20:117;;;1025:26:116;;;;;-1:-1:-1;;;;;1025:26:116;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;5012:25:122;;;5000:2;4985:18;987:253:45;4866:177:122;3024:158:107;;;:::i;7530:1925:109:-;;;;;;:::i;:::-;;:::i;2930:133:33:-;;;:::i;2631:141::-;;;:::i;1125:32:115:-;;;;;-1:-1:-1;;;;;1125:32:115;;;452:451:45;;;;;;:::i;:::-;;:::i;:::-;;;6519:14:122;;6512:22;6494:41;;6482:2;6467:18;452:451:45;6354:187:122;1086:681:109;;;;;;:::i;:::-;;:::i;2447:178:33:-;;;:::i;:::-;;;;;;;:::i;9546:1667:109:-;;;;;;:::i;:::-;;:::i;572:17:106:-;;;;;-1:-1:-1;;;;;572:17:106;;;1837:878:109;;;;;;:::i;:::-;;:::i;1232:22:115:-;;;;;-1:-1:-1;;;;;1232:22:115;;;2301:140:33;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;978:41:116:-;;;;;-1:-1:-1;;;;;978:41:116;;;549:17:106;;;;;-1:-1:-1;;;;;549:17:106;;;1866:141:33;;;:::i;865:21:116:-;;;;;-1:-1:-1;;;;;865:21:116;;;2744:190:107;;;:::i;1246:1168:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;892:31:116:-;;;;;-1:-1:-1;;;;;892:31:116;;;929:43;;;;;-1:-1:-1;;;;;929:43:116;;;5179:952:45;;;;;;:::i;:::-;;:::i;2828:1138:109:-;;;;;;:::i;:::-;;:::i;774:20:117:-;;;;;-1:-1:-1;;;;;774:20:117;;;3972:1929:109;;;;;;:::i;:::-;;:::i;407:409:44:-;;;;;;:::i;:::-;;:::i;1057:36:116:-;;;;;-1:-1:-1;;;;;1057:36:116;;;2013:142:33;;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;5907:1617:109:-;;;;;;:::i;:::-;;:::i;1572:26:26:-;;;;;;;;;1100:19:115;;;;;-1:-1:-1;;;;;1100:19:115;;;736:277:109;810:13;:11;:13::i;:::-;874:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;868:3:109;:25;;;;-1:-1:-1;;;;;868:25:109;;;;;;;;;;975:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;955:17:109;:51;;;;-1:-1:-1;;;;;955:51:109;;;;;;;;;;736:277::o;11318:1040::-;11469:108;;;;;;;;11513:17;;-1:-1:-1;;;;;11513:17:109;11469:108;;11541:13;;11513:17;11469:108;11541:13;;;14914:36:122;;;;-1:-1:-1;;11469:108:109;;;;14887:18:122;11541:13:109;;;;;;;;;;;;11469:108;;;;11573:2;11469:108;;;11406:171;;11624:27;11654:29;11674:7;11663:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;11654:8;:29::i;:::-;11835:5;;11845:11;;11858:12;;;;11624:59;;-1:-1:-1;11766:54:109;;11823:48;;-1:-1:-1;;;;;11835:5:109;;11624:59;;11823:11;:48::i;:::-;11895:11;;11917:5;;11925:16;;;;11766:105;;-1:-1:-1;11882:60:109;;-1:-1:-1;;;;;11917:5:109;;;;11882:4;:60::i;:::-;11997:11;;;;11989:20;;;;;;;;5012:25:122;;;;11989:7:109;;;;4985:18:122;;11989:20:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12118:13:109;;12184:5;;12200:24;;;12219:3;12200:24;;;;5012:25:122;;;12200:24:109;;;;;;;;;;12063:27;4985:18:122;;;12226:16:109;;;;;;;;;;12118:134;;;;12063:27;-1:-1:-1;12063:27:109;;-1:-1:-1;;;;;;12118:13:109;;;;:44;;:134;;12184:5;;;12192:6;;12118:134;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12118:134:109;;;;;;;;;;;;:::i;:::-;12310:5;;12295:56;;;;;;;;;12318:3;12295:56;-1:-1:-1;;;;;12295:56:109;;;;;;;;;;;12062:190;;-1:-1:-1;12062:190:109;;-1:-1:-1;12295:56:109;;12310:5;;12062:190;;12310:5;12295:6;:56::i;:::-;11352:1006;;;;;11318:1040::o;1586:74:107:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:134:33:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:33;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;987:253:45:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;19823:2:122;1067:63:45;;;19805:21:122;19862:2;19842:18;;;19835:30;19901:34;19881:18;;;19874:62;19972:5;19952:18;;;19945:33;19995:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:107:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:107;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:107;-1:-1:-1;;;;;3146:26:107;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;:::-;3024:158::o;7530:1925:109:-;7792:37;;;;;7812:16;7802:26;;7792:37;;;6494:41:122;7792:9:109;;;;6467:18:122;;7792:37:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7839:30:109;;;;;7849:19;;;7839:30;;;6494:41:122;7839:9:109;;-1:-1:-1;7839:9:109;;-1:-1:-1;6467:18:122;;7839:30:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7947:9:109;;-1:-1:-1;7947:9:109;;-1:-1:-1;7971:25:109;;-1:-1:-1;7991:5:109;7971:17;:25;:::i;:::-;7947:50;;;;;;;;;;7957:39;;;7947:50;;;6494:41:122;6467:18;;7947:50:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8025:32;8031:15;8048:1;8051:5;8025;:32::i;:::-;8007:50;-1:-1:-1;8067:9:109;;8132:5;8105:23;8007:50;8132:5;8105:23;:::i;:::-;8090:39;;:11;:39;:::i;:::-;:47;;;;:::i;:::-;8067:71;;;;;;;;;;8077:60;;;;8067:71;;;6494:41:122;6467:18;;8067:71:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8244:177:109;;;;;;;;8301:17;;-1:-1:-1;;;;;8301:17:109;8244:177;;8341:23;;8244:177;8341:23;;;5012:25:122;;;8341:23:109;;;;;;;;;4985:18:122;;;8341:23:109;;8244:177;;;;;;;;;;;;;8507:19;;8244:177;;-1:-1:-1;;;;8498:29:109;;8507:19;;8244:177;;8507:19;;:::i;8498:29::-;8537:11;;;:23;;;8570:9;;;:19;;;8741:5;;8751:11;;8764:12;;;;8468:59;;-1:-1:-1;;;8729:48:109;;-1:-1:-1;;;;;8741:5:109;;8468:59;;8729:11;:48::i;:::-;8824:18;;;;;;;;5012:25:122;;;8672:105:109;;-1:-1:-1;8824:7:109;;;;4985:18:122;;8824::109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8901:11:109;;8923:5;;8931:16;;;;8888:60;;-1:-1:-1;8901:11:109;;-1:-1:-1;;;;;;8923:5:109;;8888:4;:60::i;:::-;9049:13;;9115:5;;9131:21;;;;;;5012:25:122;;;8994:27:109;;;;-1:-1:-1;;;;;9049:13:109;;;;:44;;9115:5;;;;;9123:6;;4985:18:122;9131:21:109;;;;-1:-1:-1;;9131:21:109;;;;;;9168:1;9154:16;;;;;;;;;9049:131;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9049:131:109;;;;;;;;;;;;:::i;:::-;9297:5;;9344:10;;:28;;;;;;;;8993:187;;-1:-1:-1;8993:187:109;;-1:-1:-1;9257:191:109;;9405:33;;-1:-1:-1;;;;;9297:5:109;;;;9405:33;;9322:51;;8993:187;;9344:10;;;;;:26;;:28;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;9322:51:109;9375:9;9281:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:157;;;9257:10;:191::i;:::-;7741:1714;;;;;7530:1925;;;;;:::o;2930:133:33:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:33;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:33;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;452:451:45:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;-1:-1:-1;452:451:45;;;;;;:::o;1086:681:109:-;1266:34;;;;;1276:23;;;1266:34;;;6494:41:122;1266:9:109;;;;6467:18:122;;1266:34:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:27;1341:19;1350:9;;;;;;;;;;;;1341:8;:19::i;:::-;1370:11;;;:23;;;1440:20;;;;;;;;5012:25:122;;;1370:11:109;;-1:-1:-1;1440:7:109;;;;4985:18:122;;1440:20:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1636:9:109;;;;;;;;;;;;;;;;1559:87;;1543:15;;-1:-1:-1;1543:15:109;;-1:-1:-1;1582:41:109;;1559:87;;1625:9;;1636;1559:87;;;:::i;:::-;;;;-1:-1:-1;;1559:87:109;;;;;;;;;;;;;;;;;;;;;;;1543:104;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1657:3:109;;1687:5;;1719:13;;-1:-1:-1;;;;;1657:3:109;;;;-1:-1:-1;1657:21:109;;-1:-1:-1;1687:5:109;;;1657:3;;;;1719:13;;1730:1;;1719:13;;;:::i;:::-;;;;-1:-1:-1;;1719:13:109;;;;;;;;;1753:4;1719:13;1734:25;;5012::122;1719:13:109;4985:18:122;1734:25:109;;;;;;;;;;;;1657:103;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1191:576;1086:681;;:::o;2447:178:33:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;9546:1667:109:-;9781:37;;;;;9801:16;9791:26;;9781:37;;;6494:41:122;9781:9:109;;;;6467:18:122;;9781:37:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9828:30:109;;;;;9838:19;;;9828:30;;;6494:41:122;9828:9:109;;-1:-1:-1;9828:9:109;;-1:-1:-1;6467:18:122;;9828:30:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9868:9:109;;-1:-1:-1;9868:9:109;;-1:-1:-1;9892:25:109;;-1:-1:-1;9912:5:109;9892:17;:25;:::i;:::-;9868:50;;;;;;;;;;9878:39;;;9868:50;;;6494:41:122;6467:18;;9868:50:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9946:32;9952:15;9969:1;9972:5;9946;:32::i;:::-;9928:50;-1:-1:-1;9988:9:109;;10053:5;10026:23;9928:50;10053:5;10026:23;:::i;:::-;10011:39;;:11;:39;:::i;:::-;:47;;;;:::i;:::-;9988:71;;;;;;;;;;9998:60;;;;9988:71;;;6494:41:122;6467:18;;9988:71:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10165:177:109;;;;;;;;10222:17;;-1:-1:-1;;;;;10222:17:109;10165:177;;10262:23;;10165:177;10262:23;;;5012:25:122;;;10262:23:109;;;;;;;;;4985:18:122;;;10262:23:109;;10165:177;;;;;;;;;;;;;10428:19;;10165:177;;-1:-1:-1;;;;10419:29:109;;10428:19;;10165:177;;10428:19;;:::i;10419:29::-;10458:11;;;:23;;;10528:18;;;;;;;;5012:25:122;;;10458:11:109;;-1:-1:-1;10528:7:109;;;;4985:18:122;;10528::109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10605:11:109;;10627:5;;10635:16;;;;10592:60;;-1:-1:-1;10605:11:109;;-1:-1:-1;;;;;;10627:5:109;;10592:4;:60::i;:::-;10705:3;;10735:5;;10767:13;;10663:27;;-1:-1:-1;;;;;10705:3:109;;;;:21;;10735:5;;;10663:27;;;;10767:13;;10778:1;;10767:13;;;:::i;:::-;;;;-1:-1:-1;;10767:13:109;;;;;;;;;;10782:21;;5012:25:122;;;10767:13:109;4985:18:122;10782:21:109;;;;;;;;;;;;10705:99;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10663:141;;10814:23;10840:13;;;;;;;;;-1:-1:-1;;;;;10840:13:109;-1:-1:-1;;;;;10840:29:109;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10948:3;;10980:5;;10814:57;;-1:-1:-1;;;;;;10948:3:109;;;;:10;;10980:5;10948:3;11024:38;11039:5;10814:57;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;11024:38:109;11076:15;11113:1;11105:10;;11140:1;11129:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;11167:9;11156:21;;;;;;5012:25:122;;5000:2;4985:18;;4866:177;11156:21:109;;;;;;;;;;;;;11191:5;10948:258;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9730:1483;;;;9546:1667;;;;;:::o;1837:878::-;2028:38;;;;;2038:27;;;2028:38;;;6494:41:122;2028:9:109;;;;6467:18:122;;2028:38:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:27;2107:19;2116:9;;;;;;;;;;;;2107:8;:19::i;:::-;2136:16;;;:29;;;2218:11;;;;2210:20;;;;;2077:49;;-1:-1:-1;2210:7:109;;;;:20;;;;5012:25:122;;;5000:2;4985:18;;4866:177;2210:20:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2289:11:109;;2311:5;;2276:58;;-1:-1:-1;2289:11:109;;-1:-1:-1;;;;;;2311:5:109;2319:14;2276:4;:58::i;:::-;2551:20;;;;;;;;;;;;;;;;2453:132;;2424:15;;;;2493:40;;2453:132;;;;;:::i;2301:140:33:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:107;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:107;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;27003:55:122;;;2840:61:107;;;26985:74:122;27075:18;;;27068:34;26958:18;;2840:61:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:107;2823:8;:104::i;1246:1168:45:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;27611:2:122;1350:64:45;;;27593:21:122;27650:2;27630:18;;;27623:30;27689:34;27669:18;;;27662:62;27760:6;27740:18;;;27733:34;27784:19;;1350:64:45;27409:400:122;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;26985:74:122;;;2221:17:26;27075:18:122;;;27068:34;2196:43:26;;;;;;;;;26958:18:122;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;5179:952:45:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;2828:1138:109:-;2995:9;;3019:25;3039:5;3019:17;:25;:::i;:::-;2995:50;;;;;;;;;;3005:39;;;2995:50;;;6494:41:122;6467:18;;2995:50:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:32;3079:15;3096:1;3099:5;3073;:32::i;:::-;3055:50;-1:-1:-1;3115:9:109;;3179:5;3152:23;3055:50;3179:5;3152:23;:::i;:::-;3137:39;;:11;:39;:::i;:::-;:47;;;;:::i;:::-;3115:70;;;;;;;;;;3125:59;;;3115:70;;;6494:41:122;6467:18;;3115:70:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3247:177:109;;;;;;;;3304:17;;-1:-1:-1;;;;;3304:17:109;3247:177;;3344:23;;3247:177;3344:23;;;5012:25:122;;;3344:23:109;;;;;;;;;4985:18:122;;;3344:23:109;;3247:177;;;;;;;;;;;;;3474:19;;3247:177;;-1:-1:-1;;;;3465:29:109;;3474:19;;3247:177;;3474:19;;:::i;3465:29::-;3547:11;;;;3539:20;;;;;3435:59;;-1:-1:-1;3539:7:109;;;;:20;;;;5012:25:122;;;5000:2;4985:18;;4866:177;3539:20:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3618:11:109;;3640:5;;3648:16;;;;3605:60;;-1:-1:-1;3618:11:109;;-1:-1:-1;;;;;;3640:5:109;;3605:4;:60::i;:::-;3806:20;;;;;;;;;;;;;;;;3705:135;;3676:15;;;;3745:43;;3705:135;;;;;:::i;:::-;;;;-1:-1:-1;;3705:135:109;;;;;;;;;;;;;;;;;;;;;;;3676:174;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3860:3:109;;3890:5;;3922:13;;-1:-1:-1;;;;;3860:3:109;;;;-1:-1:-1;3860:21:109;;-1:-1:-1;3890:5:109;;;3860:3;;;;3922:13;;3933:1;;3922:13;;;:::i;:::-;;;;-1:-1:-1;;3922:13:109;;;;;;;;;;3937:21;;5012:25:122;;;3922:13:109;4985:18:122;3937:21:109;;;;;;;;;;;;3860:99;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2985:981;;2828:1138;;;:::o;3972:1929::-;4292:37;;;;;4312:16;4302:26;;4292:37;;;6494:41:122;4292:9:109;;;;6467:18:122;;4292:37:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4339:30:109;;;;;4349:19;;;4339:30;;;6494:41:122;4339:9:109;;-1:-1:-1;4339:9:109;;-1:-1:-1;6467:18:122;;4339:30:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4410:397:109;;;;;;;;4454:6;;-1:-1:-1;;;;;4454:6:109;;;4410:397;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4410:397:109;;;;;;;;;;;;;;;;;;;;;;;;;4738:9;;;;;;;;;;4454:6;4410:397;;;;;;4770:26;4410:397;;;;4860:11;4852:20;;;;;;;;5012:25:122;;;;4410:397:109;-1:-1:-1;4852:7:109;;-1:-1:-1;4852:7:109;;4985:18:122;;4852:20:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4931:11:109;;4953:5;;4961:16;;;;4918:60;;-1:-1:-1;4931:11:109;;-1:-1:-1;;;;;;4953:5:109;;4918:4;:60::i;:::-;5065:3;;5118:13;;5023:27;;-1:-1:-1;;;;;5065:3:109;;:21;;5087:5;;5023:27;;;;5118:13;;5129:1;;5118:13;;;:::i;:::-;;;;-1:-1:-1;;5118:13:109;;;;;;;;;;5133:21;;5012:25:122;;;5118:13:109;4985:18:122;5133:21:109;;;;;;;;;;;;5065:90;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5201:529;;;;;;;;5241:6;;-1:-1:-1;;;;;5241:6:109;;;5201:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5442:26;5201:529;;;;5166:32;5201:529;;;;5542:19;5241:6;5201:529;;;;;;;;;;5642:23;5201:529;;;;;;;;;;5785:10;;:28;;;;;;;5023:132;;-1:-1:-1;5201:529:109;;5741:153;;5763:51;;5023:132;;5785:10;;:26;;:28;;;;;;;;;;:10;:28;;;;;;;;;;;;;;5763:51;5828:56;5843:10;5855;;;;;;;;;-1:-1:-1;;;;;5855:10:109;-1:-1:-1;;;;;5855:26:109;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5741:153;4241:1660;;;3972:1929;;;;;;;;:::o;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;2013:142:33:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:33;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;5907:1617:109:-;6180:37;;;;;6200:16;6190:26;;6180:37;;;6494:41:122;6180:9:109;;;;6467:18:122;;6180:37:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6227:30:109;;;;;6237:19;;;6227:30;;;6494:41:122;6227:9:109;;-1:-1:-1;6227:9:109;;-1:-1:-1;6467:18:122;;6227:30:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6331:38;6337:11;6350:9;6361:7;6331:5;:38::i;:::-;6317:52;;6445;6451:14;6467:10;6479:17;6445:5;:52::i;:::-;6428:69;;6508:27;6538:19;6547:9;;;;;;;;;;;;6538:8;:19::i;:::-;6567:11;;;:23;;;6600:9;;;:19;;;6629:16;;;:29;;;6810:5;;6820:11;;6833:12;;;;6508:49;;-1:-1:-1;;;6798:48:109;;-1:-1:-1;;;;;6810:5:109;;6508:49;;6798:11;:48::i;:::-;6893:20;;;;;;;;5012:25:122;;;6741:105:109;;-1:-1:-1;6893:7:109;;;;4985:18:122;;6893:20:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6972:11:109;;6994:5;;6959:58;;-1:-1:-1;6972:11:109;;-1:-1:-1;;;;;;6994:5:109;7002:14;6959:4;:58::i;:::-;7118:13;;7184:5;;7200:21;;;;;;5012:25:122;;;7063:27:109;;;;-1:-1:-1;;;;;7118:13:109;;;;:44;;7184:5;;;;;7192:6;;4985:18:122;7200:21:109;4866:177:122;1667:955:107;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:107;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;1819:38:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:107;:54;;;;-1:-1:-1;;;;;1803:54:107;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:107;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;29397:25:122;;;;-1:-1:-1;;;;;2216:13:107;29438:18:122;;;29431:83;29370:18;;2101:143:107;;;-1:-1:-1;;2101:143:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:107;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:107;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:107;:48;;;;-1:-1:-1;;;;;2366:48:107;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:107;:49;;;;-1:-1:-1;;;;;2478:49:107;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:107;:37;;;;-1:-1:-1;;;;;2537:37:107;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;2592:23:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:107;:30;;;;-1:-1:-1;;;;;2585:30:107;;;;;;;;;;1667:955::o;13037:555:109:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13156:429:109;;;;;;;;13200:6;;-1:-1:-1;;;;;13200:6:109;;;13156:429;;13230:6;;;13156:429;;;;-1:-1:-1;13156:429:109;;;;;;;13296:6;13156:429;;;;13332:6;13156:429;;;;;;;13363:24;:15;13381:6;13363:24;:::i;:::-;13156:429;;;;13410:24;:15;13428:6;13410:24;:::i;:::-;13156:429;;;;13466:5;13156:429;;;;;;13506:19;13156:429;;;;13548:26;13156:429;;;13149:436;;13037:555;;;:::o;12397:634::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;12634:3:109;;12657:20;;12616:62;;-1:-1:-1;;;;;12634:3:109;;12639:16;;12657:20;;12668:8;;12657:20;;;:::i;:::-;;;;-1:-1:-1;;12657:20:109;;;;;;-1:-1:-1;;;;;;;;;;12657:20:109;-1:-1:-1;;;;;;;;;;;;;7261:163:107;;;;;;;-1:-1:-1;;;;;7261:163:107;;;;;;;;;;;;;;;;;;7031:400;12616:62:109;12607:71;;12717:37;12733:4;12740:6;12748:5;12717:7;:37::i;:::-;12807:51;12820:9;12840:4;12847:10;12807:4;:51::i;:::-;12944:23;;;;;-1:-1:-1;;;;;338:55:122;;12944:23:109;;;320:74:122;12944:8:109;;;;293:18:122;;12944:23:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13003:7:109;;12977:47;;;;;-1:-1:-1;;;;;13003:7:109;;;12977:47;;;26985:74:122;27075:18;;;27068:34;;;12977:17:109;;;;-1:-1:-1;12977:17:109;;-1:-1:-1;26958:18:122;;12977:47:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12397:634;;;;;;:::o;20040:117:31:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;:::-;20040:117;;;:::o;2711:3375:115:-;2959:34;2996:503;;;;;;;;3036:5;:14;;;-1:-1:-1;;;;;2996:503:115;;;;;3074:5;:15;;;-1:-1:-1;;;;;2996:503:115;;;;;3121:1;-1:-1:-1;;;;;2996:503:115;;;;;3149:5;:15;;;2996:503;;;;3189:5;:16;;;2996:503;;;;3228:5;:13;;;2996:503;;;;;;3264:5;:13;;;2996:503;;;;3302:1;2996:503;;;;3323:18;2996:503;;;;3374:5;2996:503;;;;;;3465:23;2996:503;;;;3410:23;2996:503;;;2959:540;;3510:28;3553:83;3577:58;3592:12;3606:10;;;;;;;;;-1:-1:-1;;;;;3606:10:115;-1:-1:-1;;;;;3606:26:115;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3577:58;3553:12;;:23;:83::i;:::-;3724:17;;3715:27;;;;;-1:-1:-1;;;;;338:55:122;;;3715:27:115;;;320:74:122;3510:126:115;;-1:-1:-1;3715:8:115;;;;293:18:122;;3715:27:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3759:22:115;;3799:7;;3809:23;;;;3752:81;;;;;-1:-1:-1;;;;;3799:7:115;;;3752:81;;;26985:74:122;27075:18;;;27068:34;;;;3752:38:115;;;-1:-1:-1;3752:38:115;;-1:-1:-1;26958:18:122;;3752:81:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3924:15:115;;;3937:1;3924:15;;;;;;;;3899:22;;3924:15;;;;;;;;;;-1:-1:-1;3924:15:115;3899:40;;3968:5;:15;;;3949:6;3956:1;3949:9;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;3949:35:115;;;-1:-1:-1;;;;;3949:35:115;;;;;4013:5;:14;;;3994:6;4001:1;3994:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3994:34:115;;;;:9;;;;;;;;;;:34;4119:16;;;4133:1;4119:16;;;;;;;;4085:31;;4119:16;;4133:1;;4119:16;;;;;;;;;-1:-1:-1;4119:16:115;4085:50;;4165:12;:23;;;4145:14;4160:1;4145:17;;;;;;;;:::i;:::-;;;;;;:43;;;;;4218:12;:22;;;4198:14;4213:1;4198:17;;;;;;;;:::i;:::-;;;;;;;;;;:42;4320:23;;;4341:1;4320:23;;;;;;;;;4287:30;;4320:23;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4320:23:115;;;;;;;;;;;;;;;;4287:56;;4413:508;;;;;;;;4458:1;4413:508;;;;4488:1;4413:508;;;;4513:5;:14;;;-1:-1:-1;;;;;4413:508:115;;;;;4553:5;:16;;;4413:508;;;;4594:5;:15;;;4413:508;;;;4632:5;:13;;;4413:508;;;;;;4668:5;:13;;;4413:508;;;;4706:5;:15;;;4413:508;;;;4742:63;4771:5;4778:26;4742:28;:63::i;:::-;4413:508;;;;4835:5;:16;;;4413:508;;;;4893:3;4898:11;4876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4413:508;;;4401:6;4408:1;4401:9;;;;;;;;:::i;:::-;;;;;;:520;;;;4987:533;;;;;;;;5032:1;4987:533;;;;5062:1;4987:533;;;;5095:1;-1:-1:-1;;;;;4987:533:115;;;;;5123:12;:23;;;4987:533;;;;5171:12;:22;;;4987:533;;;;5216:12;:20;;;4987:533;;;;;;5259:12;:20;;;4987:533;;;;5304:12;:22;;;4987:533;;;;5347:69;5376:12;5390:25;5347:28;:69::i;:::-;4987:533;;;;5446:12;:23;;;4987:533;;;;5494:15;4987:533;;;4975:6;4982:1;4975:9;;;;;;;;:::i;:::-;;;;;;:545;;;;5574:45;:153;;;;;;;;5662:1;5635:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5635:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;;;5693:1;5666:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5666:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;;;5724:1;5697:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5697:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;5796:6;:11;5787:21;;;;;-1:-1:-1;;;;;5796:11:115;;;5787:21;;;320:74:122;5574:153:115;;-1:-1:-1;5787:8:115;;;;293:18:122;;5787:21:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5822:28:115;;;;-1:-1:-1;5818:262:115;;5866:10;;:63;;;;;-1:-1:-1;;;;;5866:10:115;;;;:17;;:63;;5884:6;;5892:14;;5908:6;;5916:12;;5866:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5818:262;;;5960:32;;;;;35231:66:122;35219:79;;5960:32:115;;;35201:98:122;5960:15:115;;;;35174:18:122;;5960:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6006:10:115;;:63;;;;;-1:-1:-1;;;;;6006:10:115;;;;-1:-1:-1;6006:17:115;;-1:-1:-1;6006:63:115;;6024:6;;6032:14;;6048:6;;6056:12;;6006:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:3179;;;;;;2711:3375;;;;;:::o;2493:990:45:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;35512:2:122;35494:21;;;35551:2;35531:18;;;35524:30;35590:34;35585:2;35570:18;;35563:62;35661:7;35656:2;35641:18;;35634:35;35701:3;35686:19;;35310:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;:::-;;;;;;;;4349:6;:4;:6::i;:::-;4095:277;;:::o;2703:190:38:-;2786:14;2821:19;2828:1;2831:3;2836;2821:6;:19::i;:::-;2812:28;;2850:36;;;;;;;;;;;;;;;;;;2879:6;2850:12;:36::i;3262:157:26:-;3322:9;3317:96;;3352:30;;;;;36952:2:122;36934:21;;;36991:2;36971:18;;;36964:30;37030:25;37025:2;37010:18;;37003:53;37088:2;37073:18;;36750:347;3352:30:26;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;37304:2:122;37286:21;;;37343:2;37323:18;;;37316:30;37382:34;37377:2;37362:18;;37355:62;37453:7;37448:2;37433:18;;37426:35;37493:3;37478:19;;37102:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;619:1105:106:-;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:106;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:106;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:106;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:106;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:106;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:106;;1223:9;;-1:-1:-1;1235:10:106;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:106;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:106;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:106;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:106;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:106;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:106;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:106;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:106;;;;;;;;;;;;-1:-1:-1;;1875:19:106;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:106;;;;;;;;;:11;;;;-1:-1:-1;1875:19:106;:11;;-1:-1:-1;;1875:11:106;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:106;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:119:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:119;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:119;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:119;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4624:424:107:-;4746:15;;;;;-1:-1:-1;;;;;338:55:122;;4746:15:107;;;320:74:122;4746:8:107;;;;293:18:122;;4746:15:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:8;4771:133;;;4799:37;;;;;4813:4;4799:37;;;42064:41:122;;;42121:18;;;42114:50;;;42180:18;;;42173:50;;;42239:18;;;42232:50;4799:13:107;;;;42036:19:122;;4799:37:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4879:5;-1:-1:-1;;;;;4855:38:107;;4886:6;4855:38;;;;;;:::i;:::-;;;;;;;;4771:133;4913:13;;:38;;;;;-1:-1:-1;;;;;4913:13:107;;;;:20;;:38;;4934:6;;4942:8;;4913:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4970:13:107;;5014:18;;4961:80;;-1:-1:-1;;;;;;4970:13:107;;;;-1:-1:-1;4970:26:107;;4997:5;;5014:18;;5025:6;;5014:18;;;:::i;:::-;;;;;;;;;;;;;5004:29;;;;;;4970:64;;;;;;;;;;;;;;;-1:-1:-1;;;;;27003:55:122;;;;26985:74;;27090:2;27075:18;;27068:34;26973:2;26958:18;;26789:319;4970:64:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5036:4;4961:8;:80::i;20436:825:31:-;20600:38;;;-1:-1:-1;;;;;338:55:122;;;20600:38:31;;;;320:74:122;;;;20600:38:31;;;;;;;;;;293:18:122;;;;20600:38:31;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:31;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:31;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;:60::-;20859:396;;20521:740;;20436:825;;;;:::o;829:297:120:-;980:10;;;;972:25;;;;;;;;43168::122;;;;43209:18;;;43202:34;;;914:12:120;;939:7;;;;;;206:42;;972:7;;43141:18:122;;972:25:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:120;;-1:-1:-1;938:59:120;-1:-1:-1;1008:22:120;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:120;;;;;;43828:19:122;;;;43863:12;;;43856:28;;;;-1:-1:-1;;;43922:3:122;43918:16;;;;43936:66;43914:89;43900:12;;;43893:111;1068:25:120;;;;;;;;;44020:12:122;;;;1068:25:120;;;;;-1:-1:-1;;;829:297:120:o;3841:1483:121:-;3972:13;4081:18;4067:5;:10;;;:32;4063:91;;831:4;4115:28;4063:91;4238:5;:23;;;4234:80;;;925:4;4277:26;4234:80;4434:26;4408:5;:22;;;:52;4404:256;;1057:4;4476:42;4404:256;;;4565:26;4539:5;:22;;;:52;4535:125;;1120:4;4607:42;4535:125;4768:26;4743:5;:21;;;:51;4739:123;;1250:4;4810:41;4739:123;4968:26;4951:13;:43;;;;;;;;:::i;:::-;;4947:348;;1371:4;5010:38;4947:348;;;5086:26;5069:13;:43;;;;;;;;:::i;:::-;;5065:230;;1430:4;5128:38;5065:230;;;5204:26;5187:13;:43;;;;;;;;:::i;:::-;;5183:112;;1489:4;5246:38;3841:1483;;;;:::o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;44245:74:122;;;2677:17:26;44335:18:122;;;44328:34;;;;2712:4:26;44378:18:122;;;44371:34;2489:11:26;;1671:64;2586:43;;44218:18:122;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;1434:1263:38:-;1518:14;1559:3;1552;:10;;1544:85;;;;;;;44618:2:122;1544:85:38;;;44600:21:122;44657:2;44637:18;;;44630:30;44696:34;44676:18;;;44669:62;44767:32;44747:18;;;44740:60;44817:19;;1544:85:38;44416:426:122;1544:85:38;1863:3;1858:1;:8;;:20;;;;;1875:3;1870:1;:8;;1858:20;1854:34;;;-1:-1:-1;1887:1:38;1880:8;;1854:34;1899:12;1914:9;1920:3;1914;:9;:::i;:::-;:13;;1926:1;1914:13;:::i;:::-;1899:28;;2122:1;2117;:6;;:18;;;;;2134:1;2127:4;:8;2117:18;2113:38;;;2144:7;2150:1;2144:3;:7;:::i;:::-;2137:14;;;;;2113:38;2170:15;2184:1;930:78;2170:15;:::i;:::-;2165:1;:20;;:46;;;;-1:-1:-1;2196:15:38;2210:1;930:78;2196:15;:::i;:::-;2189:4;:22;2165:46;2161:82;;;2227:15;2241:1;930:78;2227:15;:::i;:::-;2220:23;;:3;:23;:::i;2161:82::-;2347:3;2343:1;:7;2339:352;;;2366:12;2381:7;2385:3;2381:1;:7;:::i;:::-;2366:22;-1:-1:-1;2402:11:38;2416;2423:4;2366:22;2416:11;:::i;:::-;2402:25;;2445:3;2452:1;2445:8;2441:24;;2462:3;2455:10;;;;;;;2441:24;2500:1;2488:9;2494:3;2488;:9;:::i;:::-;:13;;;;:::i;:::-;2479:22;;2352:160;;2339:352;;;2526:3;2522:1;:7;2518:173;;;2545:12;2560:7;2566:1;2560:3;:7;:::i;:::-;2545:22;-1:-1:-1;2581:11:38;2595;2602:4;2545:22;2595:11;:::i;:::-;2581:25;;2624:3;2631:1;2624:8;2620:24;;2641:3;2634:10;;;;;;;2620:24;2667:9;2673:3;2667;:9;:::i;:::-;:13;;2679:1;2667:13;:::i;:::-;2658:22;;2531:160;;2518:173;1534:1163;1434:1263;;;;;:::o;9671:207::-;9747:11;702:42;-1:-1:-1;;;;;9763:36:38;9847:2;9851;9800:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9800:54:38;;;;;;;;;;;;;;;;;;;;9763:92;;;9800:54;9763:92;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:965:115;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:115;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:115;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:115;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:115;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:115;;;1863:39;;;320:74:122;1780:73:115;;-1:-1:-1;1863:27:115;;;;;293:18:122;;1863:39:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:115;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:115;;;;-1:-1:-1;2012:36:115;;;:::i;:::-;-1:-1:-1;;;;;45563:15:122;;;45545:34;;45615:15;;45610:2;45595:18;;45588:43;45472:2;45457:18;2012:36:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:115;:49;;;;-1:-1:-1;;;;;1999:49:115;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:115;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;320:74:122;2228:8:115;;;;293:18:122;;2228:20:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:115;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:115;;;2258:32;;;320:74:122;2258:19:115;;;;-1:-1:-1;2258:19:115;;-1:-1:-1;293:18:122;;2258:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:261:120;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:120;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:120;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;5012:25:122;;;489:33:120;-1:-1:-1;481:42:120;;206;;548:7;;4985:18:122;;548:11:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:120;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:120;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;953:558:119:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:119;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:119;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;1297:495:120:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:120;;;;:::i;:::-;;;;1405:356;;;-1:-1:-1;1777:8:120;;1297:495;-1:-1:-1;1297:495:120:o;789:312:29:-;859:1;854:6;;:1;:6;;;850:245;;881:41;;;;;48787:2:122;48769:21;;;48826:2;48806:18;;;48799:30;48865:34;48860:2;48845:18;;48838:62;48936:4;48931:2;48916:18;;48909:32;48973:3;48958:19;;48585:398;881:41:29;;;;;;;;941:52;972:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:52;;;;;;:::i;:::-;;;;;;;;1012;1043:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1012:52;;;;;;:::i;7700:156:36:-;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:36;;;;;-1:-1:-1;4573:12:36;7813:36;4467:156;7862:143;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:36;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:36;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9023:13;:33::i;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;:::-;-1:-1:-1;15402:30:31;15314:125;-1:-1:-1;;15314:125:31:o;9297:1095:36:-;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:36;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:36;;;;;;;;;-1:-1:-1;;;;;9604:15:36;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:36;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:36;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:36;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:36;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:36;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:36;-1:-1:-1;9922:38:36;;-1:-1:-1;9857:44:36;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;27003:55:122;;9995:18:36;;;26985:74:122;27075:18;;;27068:34;;;9915:45:36;;-1:-1:-1;9980:12:36;;-1:-1:-1;9995:7:36;;;;26958:18:122;;9995::36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;50693:2:122;10056:175:36;;;50675:21:122;50732:3;50712:18;;;50705:31;50772:34;50752:18;;;50745:62;50843:34;50823:18;;;50816:62;50915:34;50894:19;;;50887:63;50987:17;50966:19;;;50959:46;51022:19;;10056:175:36;50491:556:122;10056:175:36;10251:24;;;;;-1:-1:-1;;;;;44263:55:122;;10251:24:36;;;44245:74:122;44335:18;;;44328:34;;;44378:18;;;44371:34;;;10251:8:36;;;;44218:18:122;;10251:24:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:36;;;10285:19;;;;;;-1:-1:-1;10321:9:36;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:36;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;15033:242:31:-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:31;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;5012:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;4985:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;11471:393:36:-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:36;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:36;;11110:304;-1:-1:-1;;;;11110:304:36:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:36;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:36;:15;;-1:-1:-1;1568:34:36;;-1:-1:-1;1452:33:36;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:36;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:36;;;;1532:174;;;-1:-1:-1;;;;;1627:15:36;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:36;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:36;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:36;-1:-1:-1;1903:38:36;;-1:-1:-1;1838:44:36;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;338:55:122;;1990:25:36;;;320:74:122;1896:45:36;;-1:-1:-1;1963:22:36;;-1:-1:-1;1990:11:36;;;;293:18:122;;1990:25:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:36;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:36;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;27003:55:122;;;;26985:74;;27090:2;27075:18;;27068:34;26973:2;26958:18;;26789:319;2077:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:36;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;27003:55:122;;;26985:74;;27075:18;;;27068:34;26958:18;2160:44:36;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;50693:2:122;2268:187:36;;;50675:21:122;50732:3;50712:18;;;50705:31;50772:34;50752:18;;;50745:62;50843:34;50823:18;;;50816:62;50915:34;50894:19;;;50887:63;50987:17;50966:19;;;50959:46;51022:19;;2268:187:36;50491:556:122;2268:187:36;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;52582:55:122;;;52564:74;;52686:66;52674:79;;;52654:18;;;52647:107;;;;52770:18;;;52763:34;52828:2;52813:18;;52806:34;52551:3;52536:19;2488:86:36;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:36;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:36;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:36;;;:88;;;;-1:-1:-1;;;;;2690:15:36;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:36;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:36;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:36;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:36;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:36;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;27003:55:122;;;;26985:74;;27090:2;27075:18;;27068:34;26973:2;26958:18;;26789:319;2894:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:36;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;27003:55:122;;;26985:74;;27075:18;;;27068:34;26958:18;2985:44:36;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:36;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;44263:55:122;;;3090:43:36;;;44245:74:122;44335:18;;;44328:34;3114:18:36;44378::122;;;44371:34;44218:18;;3090:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:36;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:36;;-1:-1:-1;3238:38:36;-1:-1:-1;3305:38:36;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;52582:55:122;;;52564:74;;52686:66;52674:79;;;52654:18;;;52647:107;;;;52770:18;;;52763:34;52828:2;52813:18;;52806:34;52551:3;52536:19;3519:86:36;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:36;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:36;-1:-1:-1;;;;;3737:15:36;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:36;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;44263:55:122;;;3834:29:36;;;44245:74:122;44335:18;;;44328:34;44378:18;;;44371:34;;;44218:18;;3834:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:36;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;44263:55:122;;;3926:29:36;;;44245:74:122;44335:18;;;44328:34;44378:18;;;44371:34;;;44218:18;;3926:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;53053:2:122;4000:74:36;;;53035:21:122;53072:18;;;53065:30;;;;53131:34;53111:18;;;53104:62;53202:34;53182:18;;;53175:62;53254:19;;4000:74:36;52851:428:122;2782:1303:36;-1:-1:-1;;;;;4116:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:36;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:36;;;;4095:162;;;;;;;53486:2:122;4095:162:36;;;53468:21:122;53525:2;53505:18;;;53498:30;53564:34;53544:18;;;53537:62;53635:17;53615:18;;;53608:45;53670:19;;4095:162:36;53284:411:122;4095:162:36;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:36;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:36;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:36;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;651:180:122:-;710:6;763:2;751:9;742:7;738:23;734:32;731:52;;;779:1;776;769:12;731:52;-1:-1:-1;802:23:122;;651:180;-1:-1:-1;651:180:122:o;836:250::-;921:1;931:113;945:6;942:1;939:13;931:113;;;1021:11;;;1015:18;1002:11;;;995:39;967:2;960:10;931:113;;;-1:-1:-1;;1078:1:122;1060:16;;1053:27;836:250::o;1091:329::-;1132:3;1170:5;1164:12;1197:6;1192:3;1185:19;1213:76;1282:6;1275:4;1270:3;1266:14;1259:4;1252:5;1248:16;1213:76;:::i;:::-;1334:2;1322:15;-1:-1:-1;;1318:88:122;1309:98;;;;1409:4;1305:109;;1091:329;-1:-1:-1;;1091:329:122:o;1425:435::-;-1:-1:-1;;;;;1659:6:122;1655:55;1644:9;1637:74;1747:6;1742:2;1731:9;1727:18;1720:34;1790:2;1785;1774:9;1770:18;1763:30;1618:4;1810:44;1850:2;1839:9;1835:18;1827:6;1810:44;:::i;1865:484::-;1918:3;1956:5;1950:12;1983:6;1978:3;1971:19;2009:4;2038:2;2033:3;2029:12;2022:19;;2075:2;2068:5;2064:14;2096:1;2106:218;2120:6;2117:1;2114:13;2106:218;;;2185:13;;-1:-1:-1;;;;;2181:62:122;2169:75;;2264:12;;;;2299:15;;;;2142:1;2135:9;2106:218;;;-1:-1:-1;2340:3:122;;1865:484;-1:-1:-1;;;;;1865:484:122:o;2354:261::-;2533:2;2522:9;2515:21;2496:4;2553:56;2605:2;2594:9;2590:18;2582:6;2553:56;:::i;2870:184::-;2922:77;2919:1;2912:88;3019:4;3016:1;3009:15;3043:4;3040:1;3033:15;3059:255;3131:2;3125:9;3173:6;3161:19;;3210:18;3195:34;;3231:22;;;3192:62;3189:88;;;3257:18;;:::i;:::-;3293:2;3286:22;3059:255;:::o;3319:334::-;3390:2;3384:9;3446:2;3436:13;;-1:-1:-1;;3432:86:122;3420:99;;3549:18;3534:34;;3570:22;;;3531:62;3528:88;;;3596:18;;:::i;:::-;3632:2;3625:22;3319:334;;-1:-1:-1;3319:334:122:o;3658:183::-;3718:4;3751:18;3743:6;3740:30;3737:56;;;3773:18;;:::i;:::-;-1:-1:-1;3818:1:122;3814:14;3830:4;3810:25;;3658:183::o;3846:662::-;3900:5;3953:3;3946:4;3938:6;3934:17;3930:27;3920:55;;3971:1;3968;3961:12;3920:55;4007:6;3994:20;4033:4;4057:60;4073:43;4113:2;4073:43;:::i;:::-;4057:60;:::i;:::-;4151:15;;;4237:1;4233:10;;;;4221:23;;4217:32;;;4182:12;;;;4261:15;;;4258:35;;;4289:1;4286;4279:12;4258:35;4325:2;4317:6;4313:15;4337:142;4353:6;4348:3;4345:15;4337:142;;;4419:17;;4407:30;;4457:12;;;;4370;;4337:142;;;-1:-1:-1;4497:5:122;3846:662;-1:-1:-1;;;;;;3846:662:122:o;4513:348::-;4597:6;4650:2;4638:9;4629:7;4625:23;4621:32;4618:52;;;4666:1;4663;4656:12;4618:52;4706:9;4693:23;4739:18;4731:6;4728:30;4725:50;;;4771:1;4768;4761:12;4725:50;4794:61;4847:7;4838:6;4827:9;4823:22;4794:61;:::i;:::-;4784:71;4513:348;-1:-1:-1;;;;4513:348:122:o;5048:454::-;5143:6;5151;5159;5167;5175;5228:3;5216:9;5207:7;5203:23;5199:33;5196:53;;;5245:1;5242;5235:12;5196:53;-1:-1:-1;;5268:23:122;;;5338:2;5323:18;;5310:32;;-1:-1:-1;5389:2:122;5374:18;;5361:32;;5440:2;5425:18;;5412:32;;-1:-1:-1;5491:3:122;5476:19;5463:33;;-1:-1:-1;5048:454:122;-1:-1:-1;5048:454:122:o;5769:484::-;5871:6;5879;5887;5940:2;5928:9;5919:7;5915:23;5911:32;5908:52;;;5956:1;5953;5946:12;5908:52;5992:9;5979:23;5969:33;;6053:2;6042:9;6038:18;6025:32;6080:18;6072:6;6069:30;6066:50;;;6112:1;6109;6102:12;6066:50;6135:61;6188:7;6179:6;6168:9;6164:22;6135:61;:::i;:::-;6125:71;;;6243:2;6232:9;6228:18;6215:32;6205:42;;5769:484;;;;;:::o;6546:248::-;6614:6;6622;6675:2;6663:9;6654:7;6650:23;6646:32;6643:52;;;6691:1;6688;6681:12;6643:52;-1:-1:-1;;6714:23:122;;;6784:2;6769:18;;;6756:32;;-1:-1:-1;6546:248:122:o;6799:1697::-;7003:4;7032:2;7072;7061:9;7057:18;7102:2;7091:9;7084:21;7125:6;7160;7154:13;7191:6;7183;7176:22;7217:2;7207:12;;7250:2;7239:9;7235:18;7228:25;;7312:2;7302:6;7299:1;7295:14;7284:9;7280:30;7276:39;7350:2;7342:6;7338:15;7371:1;7392;7402:1065;7418:6;7413:3;7410:15;7402:1065;;;7487:22;;;7511:66;7483:95;7471:108;;7602:13;;7689:9;;-1:-1:-1;;;;;7685:58:122;7670:74;;7783:11;;7777:18;7815:15;;;7808:27;;;7896:19;;7642:15;;;7928:24;;;8018:21;;;;8063:1;;7986:2;7974:15;;;8077:282;8093:8;8088:3;8085:17;8077:282;;;8174:15;;8191:66;8170:88;8156:103;;8328:17;;;;8121:1;8112:11;;;;;8285:14;;;;8077:282;;;-1:-1:-1;8445:12:122;;;;8382:5;-1:-1:-1;;;8410:15:122;;;;7444:1;7435:11;7402:1065;;;-1:-1:-1;8484:6:122;;6799:1697;-1:-1:-1;;;;;;;;;6799:1697:122:o;8732:861::-;8894:4;8923:2;8963;8952:9;8948:18;8993:2;8982:9;8975:21;9016:6;9051;9045:13;9082:6;9074;9067:22;9120:2;9109:9;9105:18;9098:25;;9182:2;9172:6;9169:1;9165:14;9154:9;9150:30;9146:39;9132:53;;9220:2;9212:6;9208:15;9241:1;9251:313;9265:6;9262:1;9259:13;9251:313;;;9354:66;9342:9;9334:6;9330:22;9326:95;9321:3;9314:108;9445:39;9477:6;9468;9462:13;9445:39;:::i;:::-;9435:49;-1:-1:-1;9542:12:122;;;;9507:15;;;;9287:1;9280:9;9251:313;;;-1:-1:-1;9581:6:122;;8732:861;-1:-1:-1;;;;;;;8732:861:122:o;9864:416::-;9957:6;9965;10018:2;10006:9;9997:7;9993:23;9989:32;9986:52;;;10034:1;10031;10024:12;9986:52;10074:9;10061:23;10107:18;10099:6;10096:30;10093:50;;;10139:1;10136;10129:12;10093:50;10162:61;10215:7;10206:6;10195:9;10191:22;10162:61;:::i;:::-;10152:71;10270:2;10255:18;;;;10242:32;;-1:-1:-1;;;;9864:416:122:o;10285:435::-;10338:3;10376:5;10370:12;10403:6;10398:3;10391:19;10429:4;10458:2;10453:3;10449:12;10442:19;;10495:2;10488:5;10484:14;10516:1;10526:169;10540:6;10537:1;10534:13;10526:169;;;10601:13;;10589:26;;10635:12;;;;10670:15;;;;10562:1;10555:9;10526:169;;10725:261;10904:2;10893:9;10886:21;10867:4;10924:56;10976:2;10965:9;10961:18;10953:6;10924:56;:::i;11884:316::-;11961:6;11969;11977;12030:2;12018:9;12009:7;12005:23;12001:32;11998:52;;;12046:1;12043;12036:12;11998:52;-1:-1:-1;;12069:23:122;;;12139:2;12124:18;;12111:32;;-1:-1:-1;12190:2:122;12175:18;;;12162:32;;11884:316;-1:-1:-1;11884:316:122:o;12205:162::-;-1:-1:-1;;;;;12292:5:122;12288:54;12281:5;12278:65;12268:93;;12357:1;12354;12347:12;12372:118;12458:5;12451:13;12444:21;12437:5;12434:32;12424:60;;12480:1;12477;12470:12;12495:980;12629:6;12637;12645;12653;12661;12669;12677;12685;12738:3;12726:9;12717:7;12713:23;12709:33;12706:53;;;12755:1;12752;12745:12;12706:53;12794:9;12781:23;12813:39;12846:5;12813:39;:::i;:::-;12871:5;-1:-1:-1;12928:2:122;12913:18;;12900:32;12941:41;12900:32;12941:41;:::i;:::-;13001:7;-1:-1:-1;13060:2:122;13045:18;;13032:32;13073:41;13032:32;13073:41;:::i;:::-;13133:7;-1:-1:-1;13187:2:122;13172:18;;13159:32;;-1:-1:-1;13238:3:122;13223:19;;13210:33;;-1:-1:-1;13290:3:122;13275:19;;13262:33;;-1:-1:-1;13342:3:122;13327:19;;13314:33;;-1:-1:-1;13399:3:122;13384:19;;13371:33;13413:30;13371:33;13413:30;:::i;:::-;13462:7;13452:17;;;12495:980;;;;;;;;;;;:::o;13988:523::-;14092:6;14100;14108;14116;14124;14132;14185:3;14173:9;14164:7;14160:23;14156:33;14153:53;;;14202:1;14199;14192:12;14153:53;-1:-1:-1;;14225:23:122;;;14295:2;14280:18;;14267:32;;-1:-1:-1;14346:2:122;14331:18;;14318:32;;14397:2;14382:18;;14369:32;;-1:-1:-1;14448:3:122;14433:19;;14420:33;;-1:-1:-1;14500:3:122;14485:19;14472:33;;-1:-1:-1;13988:523:122;-1:-1:-1;13988:523:122:o;14961:563::-;15166:2;15155:9;15148:21;-1:-1:-1;;;;;15215:6:122;15209:13;15205:62;15200:2;15189:9;15185:18;15178:90;15129:4;15315:2;15307:6;15303:15;15297:22;15355:4;15350:2;15339:9;15335:18;15328:32;15383:51;15429:3;15418:9;15414:19;15400:12;15383:51;:::i;:::-;15369:65;;15490:2;15482:6;15478:15;15472:22;15465:4;15454:9;15450:20;15443:52;15512:6;15504:14;;;14961:563;;;;:::o;15529:370::-;-1:-1:-1;;;;;15634:5:122;15628:12;15624:61;15619:3;15612:74;15735:4;15728:5;15724:16;15718:23;15711:4;15706:3;15702:14;15695:47;15594:3;15788:4;15781:5;15777:16;15771:23;15826:4;15819;15814:3;15810:14;15803:28;15847:46;15887:4;15882:3;15878:14;15864:12;15847:46;:::i;15904:791::-;-1:-1:-1;;;;;16271:6:122;16267:55;16256:9;16249:74;16359:3;16354:2;16343:9;16339:18;16332:31;16230:4;16386:69;16450:3;16439:9;16435:19;16427:6;16386:69;:::i;:::-;16503:9;16495:6;16491:22;16486:2;16475:9;16471:18;16464:50;16537:32;16562:6;16554;16537:32;:::i;:::-;16523:46;;16617:9;16609:6;16605:22;16600:2;16589:9;16585:18;16578:50;16645:44;16682:6;16674;16645:44;:::i;16700:154::-;16787:13;;16809:39;16787:13;16809:39;:::i;16859:167::-;16937:13;;16990:10;16979:22;;16969:33;;16959:61;;17016:1;17013;17006:12;17031:132;17107:13;;17129:28;17107:13;17129:28;:::i;17168:1094::-;17230:5;17278:6;17266:9;17261:3;17257:19;17253:32;17250:52;;;17298:1;17295;17288:12;17250:52;17320:22;;:::i;:::-;17311:31;;17365:48;17403:9;17365:48;:::i;:::-;17358:5;17351:63;17446:57;17499:2;17488:9;17484:18;17446:57;:::i;:::-;17441:2;17434:5;17430:14;17423:81;17536:57;17589:2;17578:9;17574:18;17536:57;:::i;:::-;17531:2;17524:5;17520:14;17513:81;17647:2;17636:9;17632:18;17626:25;17621:2;17614:5;17610:14;17603:49;17706:3;17695:9;17691:19;17685:26;17679:3;17672:5;17668:15;17661:51;17745:49;17789:3;17778:9;17774:19;17745:49;:::i;:::-;17739:3;17732:5;17728:15;17721:74;17849:3;17838:9;17834:19;17828:26;17822:3;17815:5;17811:15;17804:51;17909:3;17898:9;17894:19;17888:26;17882:3;17875:5;17871:15;17864:51;17934:3;17990:2;17979:9;17975:18;17969:25;17964:2;17957:5;17953:14;17946:49;;18014:3;18049:46;18091:2;18080:9;18076:18;18049:46;:::i;:::-;18033:14;;;18026:70;18115:3;18156:18;;;18150:25;18134:14;;;18127:49;18195:3;18236:18;;;18230:25;18214:14;;;18207:49;;;;18037:5;17168:1094;-1:-1:-1;17168:1094:122:o;18267:907::-;18377:6;18385;18438:3;18426:9;18417:7;18413:23;18409:33;18406:53;;;18455:1;18452;18445:12;18406:53;18478;18523:7;18512:9;18478:53;:::i;:::-;18468:63;;18575:3;18564:9;18560:19;18554:26;18599:18;18640:2;18632:6;18629:14;18626:34;;;18656:1;18653;18646:12;18626:34;18694:6;18683:9;18679:22;18669:32;;18739:7;18732:4;18728:2;18724:13;18720:27;18710:55;;18761:1;18758;18751:12;18710:55;18790:2;18784:9;18812:2;18808;18805:10;18802:36;;;18818:18;;:::i;:::-;18860:114;18968:4;-1:-1:-1;;18892:4:122;18888:2;18884:13;18880:86;18876:97;18860:114;:::i;:::-;18847:127;;18997:2;18990:5;18983:17;19039:7;19032:4;19027:2;19023;19019:11;19015:22;19012:35;19009:55;;;19060:1;19057;19050:12;19009:55;19073:71;19141:2;19134:4;19127:5;19123:16;19116:4;19112:2;19108:13;19073:71;:::i;:::-;;19163:5;19153:15;;;;18267:907;;;;;:::o;19179:437::-;19258:1;19254:12;;;;19301;;;19322:61;;19376:4;19368:6;19364:17;19354:27;;19322:61;19429:2;19421:6;19418:14;19398:18;19395:38;19392:218;;19466:77;19463:1;19456:88;19567:4;19564:1;19557:15;19595:4;19592:1;19585:15;19392:218;;19179:437;;;:::o;20025:184::-;20077:77;20074:1;20067:88;20174:4;20171:1;20164:15;20198:4;20195:1;20188:15;20214:184;20284:6;20337:2;20325:9;20316:7;20312:23;20308:32;20305:52;;;20353:1;20350;20343:12;20305:52;-1:-1:-1;20376:16:122;;20214:184;-1:-1:-1;20214:184:122:o;20403:::-;20455:77;20452:1;20445:88;20552:4;20549:1;20542:15;20576:4;20573:1;20566:15;20592:184;20644:77;20641:1;20634:88;20741:4;20738:1;20731:15;20765:4;20762:1;20755:15;20781:120;20821:1;20847;20837:35;;20852:18;;:::i;:::-;-1:-1:-1;20886:9:122;;20781:120::o;20906:128::-;20973:9;;;20994:11;;;20991:37;;;21008:18;;:::i;21039:168::-;21112:9;;;21143;;21160:15;;;21154:22;;21140:37;21130:71;;21181:18;;:::i;21212:288::-;21387:6;21376:9;21369:25;21430:2;21425;21414:9;21410:18;21403:30;21350:4;21450:44;21490:2;21479:9;21475:18;21467:6;21450:44;:::i;21505:336::-;21574:6;21627:2;21615:9;21606:7;21602:23;21598:32;21595:52;;;21643:1;21640;21633:12;21595:52;21675:9;21669:16;21725:66;21718:5;21714:78;21707:5;21704:89;21694:117;;21807:1;21804;21797:12;22141:217;22288:2;22277:9;22270:21;22251:4;22308:44;22348:2;22337:9;22333:18;22325:6;22308:44;:::i;22363:1168::-;22538:2;22527:9;22520:21;22550:59;22605:2;22594:9;22590:18;22581:6;22575:13;-1:-1:-1;;;;;86:54:122;74:67;;14:133;22550:59;22501:4;22656:2;22648:6;22644:15;22638:22;22669:58;22723:2;22712:9;22708:18;22694:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;22669:58;-1:-1:-1;22776:2:122;22764:15;;22758:22;-1:-1:-1;;;;;86:54:122;;22845:2;22830:18;;74:67;22789:60;22904:2;22896:6;22892:15;22886:22;22880:3;22869:9;22865:19;22858:51;22964:3;22956:6;22952:16;22946:23;22940:3;22929:9;22925:19;22918:52;23025:3;23017:6;23013:16;23007:23;23001:3;22990:9;22986:19;22979:52;23086:3;23078:6;23074:16;23068:23;23062:3;23051:9;23047:19;23040:52;23141:3;23133:6;23129:16;23123:23;23165:3;23177:51;23224:2;23213:9;23209:18;23193:14;6328:13;6321:21;6309:34;;6258:91;23177:51;23277:2;23269:6;23265:15;23259:22;23237:44;;;23300:6;23325:3;23364:2;23359;23348:9;23344:18;23337:30;23390:53;23438:3;23427:9;23423:19;23407:14;23390:53;:::i;:::-;23485:15;;23479:22;23459:18;;23452:50;;;;-1:-1:-1;23376:67:122;;22363:1168;-1:-1:-1;22363:1168:122:o;23536:672::-;23776:4;-1:-1:-1;;;;;23886:2:122;23878:6;23874:15;23863:9;23856:34;23938:2;23930:6;23926:15;23921:2;23910:9;23906:18;23899:43;;23978:6;23973:2;23962:9;23958:18;23951:34;24021:3;24016:2;24005:9;24001:18;23994:31;24048:45;24088:3;24077:9;24073:19;24065:6;24048:45;:::i;:::-;24142:9;24134:6;24130:22;24124:3;24113:9;24109:19;24102:51;24170:32;24195:6;24187;24170:32;:::i;:::-;24162:40;23536:672;-1:-1:-1;;;;;;;;23536:672:122:o;24213:244::-;24305:6;24358:3;24346:9;24337:7;24333:23;24329:33;24326:53;;;24375:1;24372;24365:12;24326:53;24398;24443:7;24432:9;24398:53;:::i;24561:1999::-;24929:4;24958:3;-1:-1:-1;;;;;25061:2:122;25053:6;25049:15;25038:9;25031:34;25113:2;25105:6;25101:15;25096:2;25085:9;25081:18;25074:43;;25153:6;25148:2;25137:9;25133:18;25126:34;25196:6;25191:2;25180:9;25176:18;25169:34;25240:6;25234:3;25223:9;25219:19;25212:35;25284:2;25278:3;25267:9;25263:19;25256:31;25310:44;25350:2;25339:9;25335:18;25327:6;25310:44;:::i;:::-;25296:58;;25403:9;25395:6;25391:22;25385:3;25374:9;25370:19;25363:51;25431:32;25456:6;25448;25431:32;:::i;:::-;25423:40;;;25472:60;25527:3;25516:9;25512:19;25503:6;25497:13;-1:-1:-1;;;;;86:54:122;74:67;;14:133;25472:60;25579:2;25571:6;25567:15;25561:22;25602:3;25614:58;25668:2;25657:9;25653:18;25639:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;25614:58;25721:2;25713:6;25709:15;25703:22;25681:44;;25744:3;25756:60;25812:2;25801:9;25797:18;25781:14;-1:-1:-1;;;;;86:54:122;74:67;;14:133;25756:60;25853:2;25841:15;;25835:22;25876:3;25895:18;;;25888:30;;;;25955:3;25943:16;;25937:23;25979:3;25998:18;;;25991:30;;;;26070:3;26058:16;;26052:23;24538:10;24527:22;26133:3;26118:19;;24515:35;26193:3;26181:16;;26175:23;26169:3;26154:19;;26147:52;26254:3;26242:16;;26236:23;26230:3;26215:19;;26208:52;26303:15;;;26297:22;26291:3;26276:19;;26269:51;26357:15;;;26351:22;6328:13;6321:21;26429:3;26414:19;;6309:34;26477:15;;26471:22;26465:3;26450:19;;26443:51;26537:15;;;26531:22;26525:3;26510:19;;;26503:51;;;;24561:1999;;-1:-1:-1;;;;;;;;24561:1999:122:o;27113:291::-;27215:6;27268:2;27256:9;27247:7;27243:23;27239:32;27236:52;;;27284:1;27281;27274:12;27236:52;27316:9;27310:16;27335:39;27368:5;27335:39;:::i;28116:430::-;28313:66;28305:6;28301:79;28296:3;28289:92;28271:3;28410:6;28404:13;28426:74;28493:6;28489:1;28484:3;28480:11;28473:4;28465:6;28461:17;28426:74;:::i;:::-;28520:16;;;;28538:1;28516:24;;28116:430;-1:-1:-1;;;28116:430:122:o;28551:287::-;28680:3;28718:6;28712:13;28734:66;28793:6;28788:3;28781:4;28773:6;28769:17;28734:66;:::i;:::-;28816:16;;;;;28551:287;-1:-1:-1;;28551:287:122:o;28843:245::-;28910:6;28963:2;28951:9;28942:7;28938:23;28934:32;28931:52;;;28979:1;28976;28969:12;28931:52;29011:9;29005:16;29030:28;29052:5;29030:28;:::i;29093:125::-;29158:9;;;29179:10;;;29176:36;;;29192:18;;:::i;30081:443::-;30289:66;30280:6;30276:2;30272:15;30268:88;30263:3;30256:101;30238:3;30386:6;30380:13;30402:75;30470:6;30465:2;30460:3;30456:12;30449:4;30441:6;30437:17;30402:75;:::i;:::-;30497:16;;;;30515:2;30493:25;;30081:443;-1:-1:-1;;;30081:443:122:o;30529:1493::-;30592:3;30623;30664:2;30698;30691:5;30687:14;30724:5;30747:1;30768;30778:1218;30794:4;30789:3;30786:13;30778:1218;;;30857:16;;;30845:29;;30897:13;;30967:9;;30989:20;;;31032:4;31161:11;;;;31058:13;;;;30967:9;31116:1;31112:14;;;31102:25;;31098:34;;31196:1;31210:679;31226:6;31221:3;31218:15;31210:679;;;31305:17;;;-1:-1:-1;;31301:90:122;31287:105;;31419:15;;31470:9;;-1:-1:-1;;;;;31466:58:122;31451:74;;31572:11;;;31566:18;31549:15;;;31542:43;31612:4;31659:11;;;31653:18;31695:15;;;31688:27;;;31742:47;31773:15;;;31653:18;31742:47;:::i;:::-;31818:17;;;;31861:14;;;;31732:57;-1:-1:-1;;31252:1:122;31243:11;31210:679;;;-1:-1:-1;31974:12:122;;;;31910:6;-1:-1:-1;31939:15:122;;;;;-1:-1:-1;;;30818:1:122;30809:11;30778:1218;;;-1:-1:-1;32012:4:122;;30529:1493;-1:-1:-1;;;;;;;30529:1493:122:o;32027:3025::-;32581:3;32634:21;;;32704:13;;32607:18;;;32726:22;;;32552:4;;32581:3;32767;;32786:18;;;;32823:4;32850:15;;;32552:4;32893:218;32907:6;32904:1;32901:13;32893:218;;;32972:13;;-1:-1:-1;;;;;32968:62:122;32956:75;;33051:12;;;;33086:15;;;;32929:1;32922:9;32893:218;;;32897:3;;33156:9;33151:3;33147:19;33142:2;33131:9;33127:18;33120:47;33190:41;33227:3;33219:6;33190:41;:::i;:::-;33176:55;;33250:2;33240:12;;33300:9;33292:6;33288:22;33283:2;33272:9;33268:18;33261:50;33333:6;33370;33364:13;33401:8;33393:6;33386:24;33440:2;33432:6;33428:15;33419:24;;33501:2;33489:8;33486:1;33482:16;33474:6;33470:29;33466:38;33541:2;33533:6;33529:15;33564:1;33574:1340;33590:8;33585:3;33582:17;33574:1340;;;-1:-1:-1;;33675:6:122;33667;33663:19;33659:92;33652:5;33645:107;33781:8;33775:15;33813:6;33853:2;33847:9;33839:6;33832:25;33908:2;33904;33900:11;33894:18;33889:2;33881:6;33877:15;33870:43;33960:2;33956;33952:11;33946:18;33977:55;34028:2;34020:6;34016:15;34002:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;33977:55;-1:-1:-1;34055:4:122;34102:11;;;34096:18;34079:15;;;34072:43;34158:11;;;34152:18;34135:15;;;34128:43;34212:11;;;34206:18;24538:10;24527:22;34271:15;;;24515:35;34310:4;34357:11;;;34351:18;34334:15;;;34327:43;34393:4;34440:11;;;34434:18;34417:15;;;34410:43;34477:6;34527:12;;;34521:19;34503:16;;;34496:45;34565:6;34615:12;;;34609:19;34591:16;;;34584:45;34653:6;34700:12;;;34694:19;34733:16;;;34726:28;;;34777:49;34810:15;;;34694:19;34777:49;:::i;:::-;34890:14;;;;34767:59;-1:-1:-1;;;34851:17:122;;;;33618:1;33609:11;33574:1340;;;33578:3;;34964:9;34956:6;34952:22;34945:4;34934:9;34930:20;34923:52;34992:54;35039:6;35031;34992:54;:::i;:::-;34984:62;32027:3025;-1:-1:-1;;;;;;;;;;;;;;32027:3025:122:o;35880:348::-;36110:2;36099:9;36092:21;36073:4;36130:49;36175:2;36164:9;36160:18;35793:2;35781:15;;35828:12;35821:4;35812:14;;35805:36;35866:2;35857:12;;35716:159;36130:49;36122:57;;36215:6;36210:2;36199:9;36195:18;36188:34;35880:348;;;;:::o;36397:::-;36627:2;36616:9;36609:21;36590:4;36647:49;36692:2;36681:9;36677:18;36310:2;36298:15;;36345:12;36338:4;36329:14;;36322:36;36383:2;36374:12;;36233:159;37508:397;37738:2;37727:9;37720:21;37701:4;37758:49;37803:2;37792:9;37788:18;35793:2;35781:15;;35828:12;35821:4;35812:14;;35805:36;35866:2;35857:12;;35716:159;37758:49;37750:57;;-1:-1:-1;;;;;37847:6:122;37843:55;37838:2;37827:9;37823:18;37816:83;37508:397;;;;:::o;37910:::-;38140:2;38129:9;38122:21;38103:4;38160:49;38205:2;38194:9;38190:18;36310:2;36298:15;;36345:12;36338:4;36329:14;;36322:36;36383:2;36374:12;;36233:159;38501:184;38553:77;38550:1;38543:88;38650:4;38647:1;38640:15;38674:4;38671:1;38664:15;38690:294;38771:1;38764:5;38761:12;38751:200;;38807:77;38804:1;38797:88;38908:4;38905:1;38898:15;38936:4;38933:1;38926:15;38751:200;38960:18;;38690:294::o;38989:1028::-;39388:4;39417:3;-1:-1:-1;;;;;39520:2:122;39512:6;39508:15;39497:9;39490:34;39560:6;39555:2;39544:9;39540:18;39533:34;39603:2;39598;39587:9;39583:18;39576:30;39623:44;39663:2;39652:9;39648:18;39640:6;39623:44;:::i;:::-;39615:52;;39676:53;39725:2;39714:9;39710:18;39702:6;39676:53;:::i;:::-;39760:3;39745:19;;39738:35;;;;-1:-1:-1;39804:3:122;39789:19;;39782:35;;;;39848:3;39833:19;;39826:35;;;;39898:15;;;39892:3;39877:19;;39870:44;39951:15;;;39945:3;39930:19;;39923:44;39998:3;39983:19;39976:35;;;;38989:1028;;-1:-1:-1;;;;38989:1028:122:o;40022:492::-;40197:3;40235:6;40229:13;40251:66;40310:6;40305:3;40298:4;40290:6;40286:17;40251:66;:::i;:::-;40380:13;;40339:16;;;;40402:70;40380:13;40339:16;40449:4;40437:17;;40402:70;:::i;:::-;40488:20;;40022:492;-1:-1:-1;;;;40022:492:122:o;40519:195::-;40558:3;40589:66;40582:5;40579:77;40576:103;;40659:18;;:::i;:::-;-1:-1:-1;40706:1:122;40695:13;;40519:195::o;40719:1133::-;41152:4;41181:3;-1:-1:-1;;;;;41284:2:122;41276:6;41272:15;41261:9;41254:34;41324:6;41319:2;41308:9;41304:18;41297:34;41367:2;41362;41351:9;41347:18;41340:30;41393:44;41433:2;41422:9;41418:18;41410:6;41393:44;:::i;:::-;41379:58;;41446:53;41495:2;41484:9;41480:18;41472:6;41446:53;:::i;:::-;41536:6;41530:3;41519:9;41515:19;41508:35;41580:6;41574:3;41563:9;41559:19;41552:35;41624:6;41618:3;41607:9;41603:19;41596:35;41680:2;41672:6;41668:15;41662:3;41651:9;41647:19;41640:44;41733:2;41725:6;41721:15;41715:3;41704:9;41700:19;41693:44;;41786:9;41778:6;41774:22;41768:3;41757:9;41753:19;41746:51;41814:32;41839:6;41831;41814:32;:::i;:::-;41806:40;40719:1133;-1:-1:-1;;;;;;;;;;;;;40719:1133:122:o;42293:305::-;42504:2;42493:9;42486:21;42467:4;42524:68;42588:2;42577:9;42573:18;42565:6;42524:68;:::i;42603:386::-;42836:2;42825:9;42818:21;42799:4;42856:68;42920:2;42909:9;42905:18;42897:6;42856:68;:::i;:::-;42848:76;;42974:6;42967:14;42960:22;42955:2;42944:9;42940:18;42933:50;42603:386;;;;;:::o;43247:395::-;43333:6;43341;43349;43402:2;43390:9;43381:7;43377:23;43373:32;43370:52;;;43418:1;43415;43408:12;43370:52;43450:9;43444:16;43500:4;43493:5;43489:16;43482:5;43479:27;43469:55;;43520:1;43517;43510:12;43469:55;43588:2;43573:18;;43567:25;43632:2;43617:18;;;43611:25;43543:5;;43567:25;;-1:-1:-1;43611:25:122;43247:395;-1:-1:-1;;;43247:395:122:o;44847:112::-;44879:1;44905;44895:35;;44910:18;;:::i;:::-;-1:-1:-1;44944:9:122;;44847:112::o;44964:290::-;45141:2;45130:9;45123:21;45104:4;45161:44;45201:2;45190:9;45186:18;45178:6;45161:44;:::i;:::-;45153:52;;45241:6;45236:2;45225:9;45221:18;45214:34;44964:290;;;;;:::o;46489:339::-;-1:-1:-1;;;;;46670:6:122;46666:55;46655:9;46648:74;46758:2;46753;46742:9;46738:18;46731:30;46629:4;46778:44;46818:2;46807:9;46803:18;46795:6;46778:44;:::i;46833:1051::-;47250:4;47279:3;47309:2;47298:9;47291:21;47335:56;47387:2;47376:9;47372:18;47364:6;47335:56;:::i;:::-;47422:2;47407:18;;;47400:34;;;;-1:-1:-1;;;;;47531:15:122;;;47526:2;47511:18;;47504:43;47583:22;;;47578:2;47563:18;;47556:50;-1:-1:-1;47615:17:122;;47701:15;;;47695:3;47680:19;;47673:44;-1:-1:-1;;47754:15:122;;;47748:3;47733:19;;47726:44;47819:4;47807:17;;;;47801:3;47786:19;;47779:46;47862:15;;;47856:3;47841:19;;;47834:44;;;;47649:15;;46833:1051;-1:-1:-1;46833:1051:122:o;47889:408::-;-1:-1:-1;;;;;48096:6:122;48092:55;48081:9;48074:74;48184:2;48179;48168:9;48164:18;48157:30;48055:4;48204:44;48244:2;48233:9;48229:18;48221:6;48204:44;:::i;:::-;48196:52;;48284:6;48279:2;48268:9;48264:18;48257:34;47889:408;;;;;;:::o;48988:439::-;49238:2;49227:9;49220:21;49201:4;49264:49;49309:2;49298:9;49294:18;35793:2;35781:15;;35828:12;35821:4;35812:14;;35805:36;35866:2;35857:12;;35716:159;49264:49;49361:9;49353:6;49349:22;49344:2;49333:9;49329:18;49322:50;49389:32;49414:6;49406;49389:32;:::i;49432:439::-;49682:2;49671:9;49664:21;49645:4;49708:49;49753:2;49742:9;49738:18;36310:2;36298:15;;36345:12;36338:4;36329:14;;36322:36;36383:2;36374:12;;36233:159;49876:610;50122:13;;50065:3;;50096;;50175:4;50202:15;;;50065:3;50245:175;50259:6;50256:1;50253:13;50245:175;;;50322:13;;50308:28;;50358:14;;;;50395:15;;;;50281:1;50274:9;50245:175;;;-1:-1:-1;;50429:21:122;;;-1:-1:-1;50466:14:122;;;;;-1:-1:-1;;;49876:610:122:o;51052:659::-;51117:5;51170:3;51163:4;51155:6;51151:17;51147:27;51137:55;;51188:1;51185;51178:12;51137:55;51217:6;51211:13;51243:4;51267:60;51283:43;51323:2;51283:43;:::i;51267:60::-;51361:15;;;51447:1;51443:10;;;;51431:23;;51427:32;;;51392:12;;;;51471:15;;;51468:35;;;51499:1;51496;51489:12;51468:35;51535:2;51527:6;51523:15;51547:135;51563:6;51558:3;51555:15;51547:135;;;51629:10;;51617:23;;51660:12;;;;51580;;51547:135;;51716:614;51845:6;51853;51906:2;51894:9;51885:7;51881:23;51877:32;51874:52;;;51922:1;51919;51912:12;51874:52;51955:9;51949:16;51984:18;52025:2;52017:6;52014:14;52011:34;;;52041:1;52038;52031:12;52011:34;52064:72;52128:7;52119:6;52108:9;52104:22;52064:72;:::i;:::-;52054:82;;52182:2;52171:9;52167:18;52161:25;52145:41;;52211:2;52201:8;52198:16;52195:36;;;52227:1;52224;52217:12;52195:36;;52250:74;52316:7;52305:8;52294:9;52290:24;52250:74;:::i;:::-;52240:84;;;51716:614;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","test_getTradeableOrder_FuzzContext(address,address,address,uint256,uint256,uint256,uint256,bool)":"d4aec664","test_getTradeableOrder_FuzzRevertBeforeStartTime(uint256,uint256)":"62530891","test_getTradeableOrder_FuzzRevertBelowMinBalance(uint256,uint256)":"8099957e","test_getTradeableOrder_FuzzRevertTooLowOutput(uint256,uint256,uint256)":"cf30a7d3","test_getTradeableOrder_e2e_Fuzz(uint256,uint256,uint256,uint256,uint256,uint256)":"f699b9a1","test_getTradeableOrder_e2e_FuzzWithPriceChecker(uint256,uint256,uint256,uint256,uint256)":"36ccd342","test_settle_e2e()":"0ef28fec","test_verify_e2e_fuzz(uint256,uint256,uint256,uint256,uint256)":"7b07ac83","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowPartialFill\",\"type\":\"bool\"}],\"name\":\"test_getTradeableOrder_FuzzContext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertBeforeStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBalance\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertBelowMinBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowedSlippage\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertTooLowOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_e2e_Fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowedSlippage\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_e2e_FuzzWithPriceChecker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_settle_e2e\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowedSlippage\",\"type\":\"uint256\"}],\"name\":\"test_verify_e2e_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"},\"test_getTradeableOrder_FuzzRevertBeforeStartTime(uint256,uint256)\":{\"details\":\"Fuzz test revert on invalid start time\"},\"test_getTradeableOrder_FuzzRevertBelowMinBalance(uint256,uint256)\":{\"details\":\"Fuzz test revert on balance too low\"},\"test_getTradeableOrder_FuzzRevertTooLowOutput(uint256,uint256,uint256)\":{\"details\":\"Fuzz test revert when oracle supplied buyAmount is less than the price checker\"},\"test_settle_e2e()\":{\"details\":\"Test the entire flow of a GAT order from `ComposableCoW`'s perspective\"},\"test_verify_e2e_fuzz(uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"Test that the order is valid when within the time bounds\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.gat.t.sol\":\"ComposableCoWGatTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.gat.t.sol\":{\"keccak256\":\"0xfe9facdf90d991c6ed26043007b2c003fc4917b03fa187eb0160770bda2fc5a3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://cd68735f7afc1c3120c852317b096e5918a13e9ff7090dd2d2541bd93311c917\",\"dweb:/ipfs/QmQMJkvE5Nt46EjtY8Tzj5vRRa4NPV9Z7gPzdnRuSURCTR\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"bool","name":"allowPartialFill","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzContext"},{"inputs":[{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertBeforeStartTime"},{"inputs":[{"internalType":"uint256","name":"currentBalance","type":"uint256"},{"internalType":"uint256","name":"minBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertBelowMinBalance"},{"inputs":[{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint256","name":"expectedOut","type":"uint256"},{"internalType":"uint256","name":"allowedSlippage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertTooLowOutput"},{"inputs":[{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"minBalance","type":"uint256"},{"internalType":"uint256","name":"currentBalance","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_e2e_Fuzz"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint256","name":"expectedOut","type":"uint256"},{"internalType":"uint256","name":"allowedSlippage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_e2e_FuzzWithPriceChecker"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_settle_e2e"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint256","name":"expectedOut","type":"uint256"},{"internalType":"uint256","name":"allowedSlippage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_verify_e2e_fuzz"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"},"test_getTradeableOrder_FuzzRevertBeforeStartTime(uint256,uint256)":{"details":"Fuzz test revert on invalid start time"},"test_getTradeableOrder_FuzzRevertBelowMinBalance(uint256,uint256)":{"details":"Fuzz test revert on balance too low"},"test_getTradeableOrder_FuzzRevertTooLowOutput(uint256,uint256,uint256)":{"details":"Fuzz test revert when oracle supplied buyAmount is less than the price checker"},"test_settle_e2e()":{"details":"Test the entire flow of a GAT order from `ComposableCoW`'s perspective"},"test_verify_e2e_fuzz(uint256,uint256,uint256,uint256,uint256)":{"details":"Test that the order is valid when within the time bounds"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.gat.t.sol":"ComposableCoWGatTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.gat.t.sol":{"keccak256":"0xfe9facdf90d991c6ed26043007b2c003fc4917b03fa187eb0160770bda2fc5a3","urls":["bzz-raw://cd68735f7afc1c3120c852317b096e5918a13e9ff7090dd2d2541bd93311c917","dweb:/ipfs/QmQMJkvE5Nt46EjtY8Tzj5vRRa4NPV9Z7gPzdnRuSURCTR"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":109} \ No newline at end of file diff --git a/out/ComposableCoW.gat.t.sol/TestExpectedOutCalculator.json b/out/ComposableCoW.gat.t.sol/TestExpectedOutCalculator.json new file mode 100644 index 0000000..116f9a3 --- /dev/null +++ b/out/ComposableCoW.gat.t.sol/TestExpectedOutCalculator.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getExpectedOut","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"address","internalType":"contract IERC20"},{"name":"","type":"address","internalType":"contract IERC20"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630d1003ee14610030575b600080fd5b61004361003e3660046100cc565b610055565b60405190815260200160405180910390f35b60008180602001905181019061006b91906101c6565b95945050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461009857600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156100e257600080fd5b843593506100f260208601610074565b925061010060408601610074565b9150606085013567ffffffffffffffff8082111561011d57600080fd5b818701915087601f83011261013157600080fd5b8135818111156101435761014361009d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101895761018961009d565b816040528281528a60208487010111156101a257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156101d857600080fd5b505191905056fea2646970667358221220a744e3bd664d4e8a69d6098163a5110d3a5122548326ec863f0fb1983fc5d0d764736f6c63430008130033","sourceMap":"13661:231:109:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80630d1003ee14610030575b600080fd5b61004361003e3660046100cc565b610055565b60405190815260200160405180910390f35b60008180602001905181019061006b91906101c6565b95945050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461009857600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156100e257600080fd5b843593506100f260208601610074565b925061010060408601610074565b9150606085013567ffffffffffffffff8082111561011d57600080fd5b818701915087601f83011261013157600080fd5b8135818111156101435761014361009d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101895761018961009d565b816040528281528a60208487010111156101a257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000602082840312156101d857600080fd5b505191905056fea2646970667358221220a744e3bd664d4e8a69d6098163a5110d3a5122548326ec863f0fb1983fc5d0d764736f6c63430008130033","sourceMap":"13661:231:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13728:162;;;;;;:::i;:::-;;:::i;:::-;;;1806:25:122;;;1794:2;1779:18;13728:162:109;;;;;;;;13829:7;13866:5;13855:28;;;;;;;;;;;;:::i;:::-;13848:35;13728:162;-1:-1:-1;;;;;13728:162:109:o;14:204:122:-;90:20;;150:42;139:54;;129:65;;119:93;;208:1;205;198:12;119:93;14:204;;;:::o;223:184::-;275:77;272:1;265:88;372:4;369:1;362:15;396:4;393:1;386:15;412:1243;537:6;545;553;561;614:3;602:9;593:7;589:23;585:33;582:53;;;631:1;628;621:12;582:53;667:9;654:23;644:33;;696:46;738:2;727:9;723:18;696:46;:::i;:::-;686:56;;761:46;803:2;792:9;788:18;761:46;:::i;:::-;751:56;;858:2;847:9;843:18;830:32;881:18;922:2;914:6;911:14;908:34;;;938:1;935;928:12;908:34;976:6;965:9;961:22;951:32;;1021:7;1014:4;1010:2;1006:13;1002:27;992:55;;1043:1;1040;1033:12;992:55;1079:2;1066:16;1101:2;1097;1094:10;1091:36;;;1107:18;;:::i;:::-;1241:2;1235:9;1303:4;1295:13;;1146:66;1291:22;;;1315:2;1287:31;1283:40;1271:53;;;1339:18;;;1359:22;;;1336:46;1333:72;;;1385:18;;:::i;:::-;1425:10;1421:2;1414:22;1460:2;1452:6;1445:18;1500:7;1495:2;1490;1486;1482:11;1478:20;1475:33;1472:53;;;1521:1;1518;1511:12;1472:53;1577:2;1572;1568;1564:11;1559:2;1551:6;1547:15;1534:46;1622:1;1617:2;1612;1604:6;1600:15;1596:24;1589:35;1643:6;1633:16;;;;;;;412:1243;;;;;;;:::o;1842:184::-;1912:6;1965:2;1953:9;1944:7;1940:23;1936:32;1933:52;;;1981:1;1978;1971:12;1933:52;-1:-1:-1;2004:16:122;;1842:184;-1:-1:-1;1842:184:122:o","linkReferences":{}},"methodIdentifiers":{"getExpectedOut(uint256,address,address,bytes)":"0d1003ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getExpectedOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A test implementation that returns what we tell it to..\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.gat.t.sol\":\"TestExpectedOutCalculator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.gat.t.sol\":{\"keccak256\":\"0xfe9facdf90d991c6ed26043007b2c003fc4917b03fa187eb0160770bda2fc5a3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://cd68735f7afc1c3120c852317b096e5918a13e9ff7090dd2d2541bd93311c917\",\"dweb:/ipfs/QmQMJkvE5Nt46EjtY8Tzj5vRRa4NPV9Z7gPzdnRuSURCTR\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract IERC20","name":"","type":"address"},{"internalType":"contract IERC20","name":"","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"getExpectedOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.gat.t.sol":"TestExpectedOutCalculator"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.gat.t.sol":{"keccak256":"0xfe9facdf90d991c6ed26043007b2c003fc4917b03fa187eb0160770bda2fc5a3","urls":["bzz-raw://cd68735f7afc1c3120c852317b096e5918a13e9ff7090dd2d2541bd93311c917","dweb:/ipfs/QmQMJkvE5Nt46EjtY8Tzj5vRRa4NPV9Z7gPzdnRuSURCTR"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":109} \ No newline at end of file diff --git a/out/ComposableCoW.guards.t.sol/ComposableCoWGuardsTest.json b/out/ComposableCoW.guards.t.sol/ComposableCoWGuardsTest.json new file mode 100644 index 0000000..5c7d8e6 --- /dev/null +++ b/out/ComposableCoW.guards.t.sol/ComposableCoWGuardsTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_BaseSwapGuard_supportsInterface","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_ReceiverLock_verify_FuzzRevertsWhenReceiverNotSelf","inputs":[{"name":"receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setSwapGuard_FuzzSetAndEmit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"swapGuard","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setSwapGuard_e2e","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790553480156200002e57600080fd5b506040516200003d9062000389565b604051809103906000f0801580156200005a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055604051620000899062000397565b604051809103906000f080158015620000a6573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000d590620003a5565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012190620003b3565b604051809103906000f0801580156200013e573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200016d90620003c1565b604051809103906000f0801580156200018a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001b990620003cf565b604051809103906000f080158015620001d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020590620003dd565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f0801580156200025a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200028990620003dd565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002de573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200030d90620003dd565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000362573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003eb565b613dd18062012d9783390190565b6109798062016b6883390190565b61116880620174e183390190565b6124eb806201864983390190565b6102ec806201ab3483390190565b610470806201ae2083390190565b610e13806201b29083390190565b6201299b80620003fc6000396000f3fe60806040523480156200001157600080fd5b5060043610620002e45760003560e01c806385226c811162000199578063c45a015511620000e9578063dfe274a91162000097578063e27d5153116200007a578063e27d515314620005d1578063fa7626d414620005e8578063fbfa77cf14620005f657600080fd5b8063dfe274a914620005b3578063e20c9f7114620005c757600080fd5b8063cf06c7b711620000cc578063cf06c7b71462000571578063d21220a71462000588578063dd1d2599146200059c57600080fd5b8063c45a01551462000549578063c80916d4146200055d57600080fd5b8063b5508aa91162000147578063b716db66116200012a578063b716db66146200050f578063b86161951462000519578063ba414fa6146200053f57600080fd5b8063b5508aa914620004f1578063b62654fb14620004fb57600080fd5b8063916a17c6116200017c578063916a17c614620004bf5780639fbcc9ad14620004c9578063ad9b047514620004dd57600080fd5b806385226c81146200049c578063864f784514620004b557600080fd5b8063329696ac116200025557806358161a4211620002035780637d499aa411620001e65780637d499aa4146200045d5780638406c079146200047157806385094f75146200048557600080fd5b806358161a42146200041c57806366d9a9a0146200044457600080fd5b80633e5e3c2311620002385780633e5e3c2314620003f45780633f7286f414620003fe57806351160630146200040857600080fd5b8063329696ac14620003e05780633c46c58614620003ea57600080fd5b8063151bcd2c11620002b357806325be124e116200029657806325be124e1462000392578063294402cc14620003a65780632e08d60214620003ba57600080fd5b8063151bcd2c14620003515780631ed7831c146200037957600080fd5b80630a9254e414620002e95780630c8548f514620002f55780630df6971f14620003265780630dfe1681146200033d575b600080fd5b620002f36200060a565b005b60335462000309906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620002f36200033736600462006eda565b62000616565b60215462000309906001600160a01b031681565b620003686200036236600462006f18565b62000753565b6040516200031d9392919062006f86565b6200038362000810565b6040516200031d919062006ff6565b60235462000309906001600160a01b031681565b601f5462000309906001600160a01b031681565b620003d1620003cb36600462007135565b62000874565b6040519081526020016200031d565b620002f362000950565b620002f362000a5c565b6200038362000b8d565b6200038362000bef565b60255462000309906001600160a01b031681565b620004336200042d36600462007176565b62000c51565b60405190151581526020016200031d565b6200044e62000ca2565b6040516200031d9190620071ca565b60325462000309906001600160a01b031681565b602a5462000309906001600160a01b031681565b620002f362000496366004620072b7565b62000daa565b620004a66200139d565b6040516200031d9190620072d7565b620002f362001477565b6200044e62001a11565b601e5462000309906001600160a01b031681565b60315462000309906001600160a01b031681565b620004a662001b10565b601b5462000309906001600160a01b031681565b620002f362001bea565b620005306200052a3660046200735b565b62001d26565b6040516200031d9190620073d6565b6200043362001efe565b601c5462000309906001600160a01b031681565b601d5462000309906001600160a01b031681565b620003d16200058236600462006f18565b6200204a565b60225462000309906001600160a01b031681565b620003d1620005ad366004620073eb565b620021b3565b60205462000309906001600160a01b031681565b62000383620021e3565b620003d1620005e236600462006f18565b62002245565b600054620004339060ff1681565b60245462000309906001600160a01b031681565b6200061462002272565b565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03821615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200068557600080fd5b505afa1580156200069a573d6000803e3d6000fd5b50506034546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152620007369450909116915063595001b2906024015b602060405180830381865afa15801562000708573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072e91906200740e565b6000620025f2565b62000742828262002716565b6200074f82600062002716565b5050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000787906200742e565b80601f0160208091040260200160405190810160405280929190818152602001828054620007b5906200742e565b8015620008065780601f10620007da5761010080835404028352916020019162000806565b820191906000526020600020905b815481529060010190602001808311620007e857829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200086a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200084b575b5050505050905090565b600060018251116200090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200092b57620009238262002983565b91506200090d565b8160008151811062000941576200094162007483565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000614926001600160a01b03169163f698da259160048083019260209291908290030181865afa158015620009b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009dc9190620074b2565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a30573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a569190620074b2565b62002b0f565b600060405162000a6c9062006e11565b604051809103906000f08015801562000a89573d6000803e3d6000fd5b506040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527ff9ae35a200000000000000000000000000000000000000000000000000000000600482015290915062000b3f906001600160a01b038316906301ffc9a7906024015b602060405180830381865afa15801562000b11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b379190620074dd565b600162002c0f565b6040517f01ffc9a700000000000000000000000000000000000000000000000000000000808252600482015262000b8a906001600160a01b038316906301ffc9a79060240162000af3565b50565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200086a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200084b575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200086a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200084b575050505050905090565b81516000908290825b8181101562000c965762000c8b8387838151811062000c7d5762000c7d62007483565b6020026020010151620021b3565b925060010162000c5a565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000da15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000d8857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d345790505b5050505050815250508152602001906001019062000cc6565b50505050905090565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03821615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000e1957600080fd5b505afa15801562000e2e573d6000803e3d6000fd5b50505050600060405162000e429062006e11565b604051809103906000f08015801562000e5f573d6000803e3d6000fd5b509050600062000eeb604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b60315490915062000f08906001600160a01b031682600062002e08565b600062000f146200306d565b6001600160a01b0380861660408084019190915260345481517ff698da25000000000000000000000000000000000000000000000000000000008152915193945060009392169163f698da25916004808201926020929091908290030181865afa15801562000f87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fad9190620074b2565b60345460315460405192935060009283926001600160a01b03908116926326e0a19692911690889062000fe5908990602001620074fb565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b169091526200103993929160248101620075fa565b600060405180830381865afa15801562001057573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010819190810190620076d7565b60315491935091506200109e906001600160a01b03168762002716565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f03fc2a7e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200112457600080fd5b505af115801562001139573d6000803e3d6000fd5b50506034546031546040516001600160a01b0392831694506326e0a196935091169088906200116d908990602001620074fb565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16909152620011c193929160248101620075fa565b600060405180830381865afa158015620011df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012099190810190620076d7565b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f03fc2a7e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200129157600080fd5b505af1158015620012a6573d6000803e3d6000fd5b50506031546001600160a01b03169150631626ba7e90506200132f8486601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b836040518363ffffffff1660e01b81526004016200134f929190620077e2565b602060405180830381865afa1580156200136d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013939190620077fd565b5050505050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000da1578382906000526020600020018054620013e3906200742e565b80601f016020809104026020016040519081016040528092919081815260200182805462001411906200742e565b8015620014625780601f10620014365761010080835404028352916020019162001462565b820191906000526020600020905b8154815290600101906020018083116200144457829003601f168201915b505050505081526020019060010190620013c1565b60006001604051620014899062006e1f565b908152602001604051809103906000f080158015620014ac573d6000803e3d6000fd5b50905060006002604051620014c19062006e1f565b908152602001604051809103906000f080158015620014e4573d6000803e3d6000fd5b506034546031546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506200153b9291169063595001b290602401620006ea565b60315460009062001557906001600160a01b03166001620031f5565b6000815181106200156c576200156c62007483565b6020026020010151905060008067ffffffffffffffff8111156200159457620015946200700b565b604051908082528060200260200182016040528015620015be578160200160208202803683370190505b50603154909150620015dc906001600160a01b031683600162002e08565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016689190620074b2565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152949550909384936001600160a01b03908116936326e0a19693620016d29391909216918a918a90600401620075fa565b600060405180830381865afa158015620016f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200171a9190810190620076d7565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152939550919350620017569216908484600062003487565b6040517f44d7f0a400000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d906344d7f0a4906024016020604051808303816000875af1158015620017c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e89190620074dd565b5060315462001801906001600160a01b03168762002716565b60315460408051808201909152602d546001600160a01b039081168252602e5460208301526200185692169084847f03fc2a7e0000000000000000000000000000000000000000000000000000000062003487565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f03fc2a7e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620018dc57600080fd5b505af1158015620018f1573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a19694506200195793909216918a91908a90600401620075fa565b600060405180830381865afa15801562001975573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200199f9190810190620076d7565b5050603154620019b9906001600160a01b03168862002716565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152620019ef9216908484600062003487565b60315462001a08906001600160a01b0316600062002716565b50505050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000da15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001af757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001aa35790505b5050505050815250508152602001906001019062001a35565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000da157838290600052602060002001805462001b56906200742e565b80601f016020809104026020016040519081016040528092919081815260200182805462001b84906200742e565b801562001bd55780601f1062001ba95761010080835404028352916020019162001bd5565b820191906000526020600020905b81548152906001019060200180831162001bb757829003601f168201915b50505050508152602001906001019062001b34565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000614946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562001c66573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c8c9190620074b2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562001cee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d1491906200740e565b6034546001600160a01b0316620025f2565b6060600183511162001dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000904565b600062001dc884516200204a565b67ffffffffffffffff81111562001de35762001de36200700b565b60405190808252806020026020018201604052801562001e0d578160200160208202803683370190505b50905060005b60018551111562001ef4578360011660010362001e715784600185038151811062001e425762001e4262007483565b602002602001015182828151811062001e5f5762001e5f62007483565b60200260200101818152505062001ed8565b8451846001010362001e96576000801b82828151811062001e5f5762001e5f62007483565b84846001018151811062001eae5762001eae62007483565b602002602001015182828151811062001ecb5762001ecb62007483565b6020026020010181815250505b60010160028404935062001eec8562002983565b945062001e13565b5090505b92915050565b60008054610100900460ff161562001f1f5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620020455760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001fc7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162007841565b60408051601f198184030181529082905262001fe3916200788b565b6000604051808303816000865af19150503d806000811462002022576040519150601f19603f3d011682016040523d82523d6000602084013e62002027565b606091505b5091505080806020019051810190620020419190620074dd565b9150505b919050565b6000600182116200205d57506000919050565b60008270010000000000000000000000000000000081106200208e57608093841c936200208b9083620078d8565b91505b680100000000000000008410620020b457604093841c93620020b19083620078d8565b91505b6401000000008410620020d657602093841c93620020d39083620078d8565b91505b620100008410620020f657601093841c93620020f39083620078d8565b91505b61010084106200211557600893841c93620021129083620078d8565b91505b601084106200213357600493841c93620021309083620078d8565b91505b600484106200215157600293841c936200214e9083620078d8565b91505b600284106200216a5762002167600183620078d8565b91505b6000816200217b81196001620078d8565b16905081811480156200218e5750600083115b156200219d5750909392505050565b620021aa836001620078d8565b95945050505050565b60008183108015620021cd578360005282602052620021d6565b82600052836020525b5050604060002092915050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200086a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200084b575050505050905090565b6000808219600101831683145b83156200226a57600193841c93919091019062002252565b900392915050565b6200227c62003e47565b6025546040516001600160a01b0390911690620022999062006e2d565b6001600160a01b039091168152602001604051809103906000f080158015620022c6573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200244e94938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562002387573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023ad9190620074b2565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200243762004209565b6031546001600160a01b03169493929190620042e3565b6040516200245c9062006e3b565b604051809103906000f08015801562002479573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620024c09062006e49565b604051809103906000f080158015620024dd573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620025249062006e57565b604051809103906000f08015801562002541573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556034546040519116906200258a9062006e65565b6001600160a01b039091168152602001604051809103906000f080158015620025b7573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b806001600160a01b0316826001600160a01b0316146200074f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620026929060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620026cb9190620078ee565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162002704919062007943565b60405180910390a16200074f62004516565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200278557600080fd5b505af11580156200279a573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200281a57600080fd5b505af11580156200282f573d6000803e3d6000fd5b50506040516001600160a01b038481168252851692507f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859915060200160405180910390a26034546040517f8f7984ed0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690638f7984ed90602401600060405180830381600087803b158015620028d457600080fd5b505af1158015620028e9573d6000803e3d6000fd5b50506034546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526200074f9450909116915063595001b290602401602060405180830381865afa15801562002956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200297c91906200740e565b82620025f2565b6060806000835190508060011660010362002a40576002810460010167ffffffffffffffff811115620029ba57620029ba6200700b565b604051908082528060200260200182016040528015620029e4578160200160208202803683370190505b50915062002a1584600183038151811062002a035762002a0362007483565b60200260200101516000801b620021b3565b8260018451038151811062002a2e5762002a2e62007483565b60200260200101818152505062002a8d565b6002810467ffffffffffffffff81111562002a5f5762002a5f6200700b565b60405190808252806020026020018201604052801562002a89578160200160208202803683370190505b5091505b6000805b6001830381101562002b055762002ad686828151811062002ab65762002ab662007483565b602002602001015187836001018151811062000c7d5762000c7d62007483565b84838151811062002aeb5762002aeb62007483565b602090810291909101015260019091019060020162002a91565b5091949350505050565b8082146200074f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b9d9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162002bd6919062007981565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620027049190620079cd565b801515821515146200074f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002ca19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262002d0c576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002d43565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002d52919062007a0b565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162002dbd576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002df4565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002704919062007a5d565b905090565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002e7757600080fd5b505af115801562002e8c573d6000803e3d6000fd5b50505050801562002f70576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002f1357600080fd5b505af115801562002f28573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618360405162002f67919062007a9b565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062002fbd908590859060040162007ab0565b600060405180830381600087803b15801562002fd857600080fd5b505af115801562002fed573d6000803e3d6000fd5b50506034546040516200306893506001600160a01b039091169150636108c5329086906200302090879060200162007a9b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040162000af39291906001600160a01b03929092168252602082015260400190565b505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915262002e037fdfe0aea12481b6861fe85f311f9e24a0b5f7886a445111af3b17dccfa27d99656040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b60408051610140810182526021546001600160a01b03908116825260225416602082015260009181018290526001606082810182905260808301919091524260a0830152600260c0830152610e1060e08301526101008201929092527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b41426101208201528267ffffffffffffffff8111156200329457620032946200700b565b604051908082528060200260200182016040528015620032e357816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620032b35790505b50915060005b82518110156200339257604080516060810182526038546001600160a01b031681528151602080820185905291929183019101604051602081830303815290604052805190602001208152602001836040516020016200334a919062007ad6565b60405160208183030381529060405281525083828151811062003371576200337162007483565b60200260200101819052508080620033899062007b70565b915050620032e9565b508051602a54606083015160c08401516200348093926000927f095ea7b300000000000000000000000000000000000000000000000000000000926001600160a01b0390921691620033e5919062007bab565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200346b62004209565b6001600160a01b038a169493929190620042e3565b5092915050565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525090506000620036746200366c83602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620035da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036009190620074b2565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b87906200465d565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620036e957600080fd5b505af1158015620036fe573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af115801562003776573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200379c9190620074dd565b50604080516002808252606082018352600092602083019080368337019050509050856000015181600081518110620037d957620037d962007483565b60200260200101906001600160a01b031690816001600160a01b03168152505085602001518160018151811062003814576200381462007483565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090508360600151816000815181106200386a576200386a62007483565b60200260200101818152505083608001518160018151811062003891576200389162007483565b602090810291909101015260408051600280825260608201909252600091816020015b62003924604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b815260200190600190039081620038b4579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e001518152602001620039ac8a600262004787565b8152602001896060015181526020018b89604051602001620039d092919062007bc5565b60405160208183030381529060405281525081600081518110620039f857620039f862007483565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e00151815260200162003a7287600062004787565b815260200186606001518152602001858152508160018151811062003a9b5762003a9b62007483565b602002602001018190525060006040518060600160405280600067ffffffffffffffff81111562003ad05762003ad06200700b565b60405190808252806020026020018201604052801562003b1f57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162003aef5790505b508152602001600060405190808252806020026020018201604052801562003b7657816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162003b465790505b508152602001600060405190808252806020026020018201604052801562003bcd57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162003b9d5790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003c4657600080fd5b505af115801562003c5b573d6000803e3d6000fd5b5050507fffffffff000000000000000000000000000000000000000000000000000000008816905062003d13576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b9062003cd990879087908790879060040162007cc7565b600060405180830381600087803b15801562003cf457600080fd5b505af115801562003d09573d6000803e3d6000fd5b5050505062003e3a565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562003d9b57600080fd5b505af115801562003db0573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b915062003e0590879087908790879060040162007cc7565b600060405180830381600087803b15801562003e2057600080fd5b505af115801562003e35573d6000803e3d6000fd5b505050505b5050505050505050505050565b62003e51620048d4565b62003e916040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062004d37565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f6200000000000000000000000000000000000000000000000000000000009181019190915262003f149062004d37565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c0000000000000000000000000000000000000000000000000000009181019190915262003f979062004d37565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462003ff6929182169116683635c9adc5dea0000062004ebd565b602254602d546200401e916001600160a01b039081169116683635c9adc5dea0000062004ebd565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062004064576200406462007483565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062004098576200409862007483565b6001600160a01b039283166020918202929092010152602f54825191169082906002908110620040cc57620040cc62007483565b6001600160a01b039283166020918202929092010152601c54601b54601e5462004106939283169291821691859160029116600062004ecc565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200415e939283169291821691859160029116600162004ecc565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620041b59392831692918216918591600291168162004ecc565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462000b8a929182169116683635c9adc5dea0000062004ebd565b604080516002808252606082810190935260009190816020015b60408051808201909152600080825260208201528152602001906001900390816200422357505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062004284576200428462007483565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e5491810191909152815182906001908110620042cd57620042cd62007483565b602002602001018190525062001ef88162004fd0565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200434a9190620074b2565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620043919a9998979695949392919062007e92565b602060405180830381865afa158015620043af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043d59190620074b2565b9050620043e28362004fd0565b9250606060005b84518110156200445f578162004425848784815181106200440e576200440e62007483565b60200260200101516200465d90919063ffffffff16565b6040516020016200443892919062007f09565b60405160208183030381529060405291508080620044569062007b70565b915050620043e9565b50886001600160a01b0316636a7612028989898960008060008060008b6040516020016200448e91906200788b565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620044c49a9998979695949392919062007f3c565b6020604051808303816000875af1158015620044e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200450a9190620074dd565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200462f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620045ca929160200162007841565b60408051601f1981840301815290829052620045e6916200788b565b6000604051808303816000865af19150503d806000811462004625576040519150601f19603f3d011682016040523d82523d6000602084013e6200462a565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015620046de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004704919062007fc3565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc83610100015103620047ba576001175b82610120015115620047ca576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063283610140015103620048005760081762004831565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce836101400151036200483157600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce8361016001510362004862576010175b600182600381111562004879576200487962007e27565b03620048885760201762001ef8565b60028260038111156200489f576200489f62007e27565b03620048ae5760401762001ef8565b6003826003811115620048c557620048c562007e27565b0362001ef85760601792915050565b620049146040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062004d37565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620049979062004d37565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262004a1a9062005109565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062004a639062006e73565b604051809103906000f08015801562004a80573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562004ae457600080fd5b505af115801562004af9573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062004b1c9062006e81565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562004b50573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562004bdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c0391906200740e565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562004ca157600080fd5b505af115801562004cb6573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b15801562004d1b57600080fd5b505af115801562004d30573d6000803e3d6000fd5b5050505050565b604080518082019091526000808252602082015260008260405160200162004d6091906200788b565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562004de5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e0b91906200740e565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062004e62908490889060040162008002565b600060405180830381600087803b15801562004e7d57600080fd5b505af115801562004e92573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b62003068838383600062005116565b6000866001600160a01b0316631688f0b98763b63e800d60e01b8888600089600080600060405160240162004f08979695949392919062008026565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825262004f7f9291879060040162008090565b6020604051808303816000875af115801562004f9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004fc591906200740e565b979650505050505050565b606060005b82518110156200510257600062004fee826001620078d8565b90505b8351811015620050ec5783818151811062005010576200501062007483565b6020026020010151600001516001600160a01b03168483815181106200503a576200503a62007483565b6020026020010151600001516001600160a01b03161115620050d75760008483815181106200506d576200506d62007483565b602002602001015190508482815181106200508c576200508c62007483565b6020026020010151858481518110620050a957620050a962007483565b602002602001018190525080858381518110620050ca57620050ca62007483565b6020026020010181905250505b80620050e38162007b70565b91505062004ff1565b5080620050f98162007b70565b91505062004fd5565b5090919050565b60006200348082620053ab565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291516000928716916200519a916200788b565b6000604051808303816000865af19150503d8060008114620051d9576040519150601f19603f3d011682016040523d82523d6000602084013e620051de565b606091505b50915050600081806020019051810190620051fa9190620074b2565b90506200524d8462005246876200523f7f70a08231000000000000000000000000000000000000000000000000000000006200523860058d620054f9565b9062005539565b9062005572565b906200559b565b8215620053a35760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b03891691620052c691906200788b565b6000604051808303816000865af19150503d806000811462005305576040519150601f19603f3d011682016040523d82523d6000602084013e6200530a565b606091505b50915050600081806020019051810190620053269190620074b2565b90508286101562005351576200533d8684620080c4565b620053499082620080c4565b90506200536c565b6200535d8387620080c4565b620053699082620078d8565b90505b6200139381620052467f18160ddd000000000000000000000000000000000000000000000000000000006200523860058d620054f9565b505050505050565b60008082604051602001620053c191906200788b565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562005443573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200546991906200740e565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620054c0908590879060040162008002565b600060405180830381600087803b158015620054db57600080fd5b505af1158015620054f0573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262005532565b6002820180546001810182556000918252602082206001600160a01b0384169101558262005532565b6200074f8282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200561457602002820191906000526020600020905b815481526020019060010190808311620055ff575b50505050509050600083620056298362005a75565b6040516020016200563c92919062007841565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a168352815292812091945090929091620056a8918691889101620080da565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620056e357620056e18762005b22565b505b6001600160a01b0385166000908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051909183916200573c918791899101620080da565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200578391906200788b565b600060405180830381855afa9150503d8060008114620057c0576040519150601f19603f3d011682016040523d82523d6000602084013e620057c5565b606091505b509150620057e2905081620057dc88602062007bab565b62005b2f565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562005862573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058889190620074b2565b905080821462005967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000904565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620059e457600080fd5b505af1158015620059f9573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562005a6160028b01600062006e8f565b896004016000905550505050505050505050565b606060008251602062005a89919062007bab565b67ffffffffffffffff81111562005aa45762005aa46200700b565b6040519080825280601f01601f19166020018201604052801562005acf576020820181803683370190505b50905060005b83518110156200348057600084828151811062005af65762005af662007483565b60200260200101519050808260200260200184015250808062005b199062007b70565b91505062005ad5565b600062001ef88262005bd1565b6000806000602085511162005b4657845162005b49565b60205b905060005b8181101562005bc75762005b6481600862007bab565b8662005b718388620078d8565b8151811062005b845762005b8462007483565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005bbe8162007b70565b91505062005b4e565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562005c4357602002820191906000526020600020905b81548152602001906001019080831162005c2e575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062005ca792508591879101620080da565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005d5e576001600160a01b0384166000908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162005d2e918591879101620080da565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362005d6c8362006ccc565b60405160200162005d7f92919062007841565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005def57600080fd5b505af115801562005e04573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005e2591906200788b565b600060405180830381855afa9150503d806000811462005e62576040519150601f19603f3d011682016040523d82523d6000602084013e62005e67565b606091505b50915062005e8490508162005e7e87602062007bab565b62006d79565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562005eff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005f29919081019062008178565b50905080516001036200635b5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062005f815762005f8162007483565b60200260200101516040518363ffffffff1660e01b815260040162005fbb9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005fd9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fff9190620074b2565b9050806200606a577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200603f576200603f62007483565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462006147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000904565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200617f929190620080da565b6040516020818303038152906040528051906020012085600081518110620061ab57620061ab62007483565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1816000815181106200621d576200621d62007483565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262006280918a918c9101620080da565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162006302918a918c9101620080da565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555062006ac4565b60018151111562006a395760005b815181101562006a325760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620063bd57620063bd62007483565b60200260200101516040518363ffffffff1660e01b8152600401620063f79291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200643b9190620074b2565b905080620064a5577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200647a576200647a62007483565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a858581518110620064ed57620064ed62007483565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b1580156200657d57600080fd5b505af115801562006592573d6000803e3d6000fd5b50505050600060608a6001600160a01b031687604051620065b491906200788b565b600060405180830381855afa9150503d8060008114620065f1576040519150601f19603f3d011682016040523d82523d6000602084013e620065f6565b606091505b5090925090506200660e8162005e7e8b602062007bab565b95508180156200663d57507f133700000000000000000000000000000000000000000000000000000000000086145b1562006947577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200667b929190620080da565b60405160208183030381529060405280519060200120888881518110620066a657620066a662007483565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062006717576200671762007483565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f16835284528082209051929390926200677a918d918f9101620080da565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162006831929190620080da565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620068b457620068b462007483565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200692557600080fd5b505af11580156200693a573d6000803e3d6000fd5b5050505050505062006a32565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200698f576200698f62007483565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562006a0057600080fd5b505af115801562006a15573d6000803e3d6000fd5b50505050505050808062006a299062007b70565b91505062006369565b5062006ac4565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000904565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162006b209188918a9101620080da565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662006bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000904565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562006c3b60028a01600062006e8f565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162006c999188918a9101620080da565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062006ce0919062007bab565b67ffffffffffffffff81111562006cfb5762006cfb6200700b565b6040519080825280601f01601f19166020018201604052801562006d26576020820181803683370190505b50905060005b83518110156200348057600084828151811062006d4d5762006d4d62007483565b60200260200101519050808260200260200184015250808062006d709062007b70565b91505062006d2c565b6000806000602085511162006d9057845162006d93565b60205b905060005b8181101562005bc75762006dae81600862007bab565b8662006dbb8388620078d8565b8151811062006dce5762006dce62007483565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006e088162007b70565b91505062006d98565b6102d980620081da83390190565b61030680620084b383390190565b61237a80620087b983390190565b61013c806200ab3383390190565b610809806200ac6f83390190565b610200806200b47883390190565b611246806200b67883390190565b610d06806200c8be83390190565b6153a2806200d5c483390190565b508054600082559060005260206000209081019062000b8a91905b8082111562006ec0576000815560010162006eaa565b5090565b6001600160a01b038116811462000b8a57600080fd5b6000806040838503121562006eee57600080fd5b823562006efb8162006ec4565b9150602083013562006f0d8162006ec4565b809150509250929050565b60006020828403121562006f2b57600080fd5b5035919050565b60005b8381101562006f4f57818101518382015260200162006f35565b50506000910152565b6000815180845262006f7281602086016020860162006f32565b601f01601f19169290920160200192915050565b6001600160a01b0384168152826020820152606060408201526000620021aa606083018462006f58565b600081518084526020808501945080840160005b8381101562006feb5781516001600160a01b03168752958201959082019060010162006fc4565b509495945050505050565b60208152600062005532602083018462006fb0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200706157620070616200700b565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200709357620070936200700b565b604052919050565b600067ffffffffffffffff821115620070b857620070b86200700b565b5060051b60200190565b600082601f830112620070d457600080fd5b81356020620070ed620070e7836200709b565b62007067565b82815260059290921b840181019181810190868411156200710d57600080fd5b8286015b848110156200712a578035835291830191830162007111565b509695505050505050565b6000602082840312156200714857600080fd5b813567ffffffffffffffff8111156200716057600080fd5b6200716e84828501620070c2565b949350505050565b6000806000606084860312156200718c57600080fd5b83359250602084013567ffffffffffffffff811115620071ab57600080fd5b620071b986828701620070c2565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620072a8578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620072925783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200724e565b50978a01979550505091870191600101620071f2565b50919998505050505050505050565b600060208284031215620072ca57600080fd5b8135620055328162006ec4565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200734e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200733b85835162006f58565b94509285019290850190600101620072fe565b5092979650505050505050565b600080604083850312156200736f57600080fd5b823567ffffffffffffffff8111156200738757600080fd5b6200739585828601620070c2565b95602094909401359450505050565b600081518084526020808501945080840160005b8381101562006feb57815187529582019590820190600101620073b8565b602081526000620055326020830184620073a4565b60008060408385031215620073ff57600080fd5b50508035926020909101359150565b6000602082840312156200742157600080fd5b8151620055328162006ec4565b600181811c908216806200744357607f821691505b6020821081036200747d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215620074c557600080fd5b5051919050565b805180151581146200204557600080fd5b600060208284031215620074f057600080fd5b6200553282620074cc565b81516001600160a01b03168152610180810160208301516200752860208401826001600160a01b03169052565b5060408301516200754460408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a08301516200757160a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151620075a78285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200716e606085018262006f58565b6001600160a01b03851681526080602082015260006200761e6080830186620075c6565b828103604084015262007632818662006f58565b9050828103606084015262004fc58185620073a4565b8051620020458162006ec4565b805163ffffffff811681146200204557600080fd5b600082601f8301126200767c57600080fd5b815167ffffffffffffffff8111156200769957620076996200700b565b620076ae6020601f19601f8401160162007067565b818152846020838601011115620076c457600080fd5b6200716e82602083016020870162006f32565b6000808284036101a0811215620076ed57600080fd5b61018080821215620076fe57600080fd5b620077086200703a565b9150620077158562007648565b8252620077256020860162007648565b6020830152620077386040860162007648565b604083015260608501516060830152608085015160808301526200775f60a0860162007655565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012062007794818701620074cc565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff811115620077ca57600080fd5b620077d8858286016200766a565b9150509250929050565b8281526040602082015260006200716e604083018462006f58565b6000602082840312156200781057600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146200553257600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200787d81600485016020870162006f32565b919091016004019392505050565b600082516200789f81846020870162006f32565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111562001ef85762001ef8620078a9565b6040815260006200792c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200792c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b604081526000620079bf60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b604081526000620079bf60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062007a4960408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200716e818562006f58565b60408152600062007a4960408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b602081526000620055326020830184620075c6565b60408152600062007ac56040830185620075c6565b905082151560208301529392505050565b81516001600160a01b031681526101408101602083015162007b0360208401826001600160a01b03169052565b50604083015162007b1f60408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362007ba45762007ba4620078a9565b5060010190565b808202811582820484141762001ef85762001ef8620078a9565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b1681526000825162007c0481601485016020870162006f32565b919091016014019392505050565b6000826060808201846000805b600381101562007cba578584038952825180518086526020918201918087019190600582901b88018101865b8381101562007ca257898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c905262007c8e8c84018262006f58565b968401969584019592505060010162007c4b565b509c81019c9750959095019450505060010162007c1f565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b8381101562007d0d5781516001600160a01b03168552938201939082019060010162007ce6565b50508683038188015262007d22838b620073a4565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b8381101562007dff57601f1988840301855281516101608151855287820151888601528882015162007d848a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e08083015190860152610100808301519086015261012080830151908601526101409182015191850181905262007dea8186018362006f58565b96880196945050509085019060010162007d48565b505089810360608b015262007e15818c62007c12565b9e9d5050505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811062007e8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262007ebe8285018d62006f58565b925062007ecf606085018c62007e56565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b6000835162007f1d81846020880162006f32565b83519083019062007f3381836020880162006f32565b01949350505050565b60006101406001600160a01b03808e1684528c602085015281604085015262007f688285018d62006f58565b915062007f79606085018c62007e56565b8960808501528860a08501528760c085015280871660e08501528086166101008501525082810361012084015262007fb2818562006f58565b9d9c50505050505050505050505050565b60008060006060848603121562007fd957600080fd5b835160ff8116811462007feb57600080fd5b602085015160409095015190969495509392505050565b6001600160a01b03831681526040602082015260006200716e604083018462006f58565b60006101008083526200803c8184018b62006fb0565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b0384168152606060208201526000620080b4606083018562006f58565b9050826040830152949350505050565b8181038181111562001ef85762001ef8620078a9565b825160009082906020808701845b838110156200810657815185529382019390820190600101620080e8565b5050948252509092019392505050565b600082601f8301126200812857600080fd5b815160206200813b620070e7836200709b565b82815260059290921b840181019181810190868411156200815b57600080fd5b8286015b848110156200712a57805183529183019183016200815f565b600080604083850312156200818c57600080fd5b825167ffffffffffffffff80821115620081a557600080fd5b620081b38683870162008116565b93506020850151915080821115620081ca57600080fd5b50620077d8858286016200811656fe608060405234801561001057600080fd5b506102b9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e610049366004610142565b610075565b604051901515815260200160405180910390f35b61004e61007036600461018b565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600080610121606088016040890161024d565b73ffffffffffffffffffffffffffffffffffffffff16149695505050505050565b60006020828403121561015457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461018457600080fd5b9392505050565b60008060008060008587036101e08112156101a557600080fd5b610180808212156101b557600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101da57600080fd5b908701906060828a0312156101ee57600080fd5b9093506101c0870135908082111561020557600080fd5b818801915088601f83011261021957600080fd5b81358181111561022857600080fd5b89602082850101111561023a57600080fd5b9699959850939650602001949392505050565b60006020828403121561025f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461018457600080fdfea2646970667358221220ddb52044c4a9a42096bd042494f29ae41dc7911347f4cb6455aaa7a39eab2d1664736f6c63430008130033608060405234801561001057600080fd5b5060405161030638038061030683398101604081905261002f91610037565b600055610050565b60006020828403121561004957600080fd5b5051919050565b6102a78061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e61004936600461012b565b610075565b604051901515815260200160405180910390f35b61004e610070366004610174565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054610120906060880135610236565b159695505050505050565b60006020828403121561013d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461016d57600080fd5b9392505050565b60008060008060008587036101e081121561018e57600080fd5b6101808082121561019e57600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101c357600080fd5b908701906060828a0312156101d757600080fd5b9093506101c087013590808211156101ee57600080fd5b818801915088601f83011261020257600080fd5b81358181111561021157600080fd5b89602082850101111561022357600080fd5b9699959850939650602001949392505050565b60008261026c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fea26469706673582212205dfaf57d0502300f4f46fee2111ad23463fa3ccb371e514ca536b55c2f60166364736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a26469706673582212202060cf2d0df53157c6830ee7c01d6f04da336eb7e3716a0f7fc14f4a23049dbe64736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"342:5137:110:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:30;;;;;;;;;;;342:5137:110;;;;;;;;;;1168:10:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:116;:22;;-1:-1:-1;;;;;;1156:22:116;-1:-1:-1;;;;;1156:22:116;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:116;:32;;-1:-1:-1;;;;;;1188:32:116;-1:-1:-1;;;;;1188:32:116;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:116;:44;;-1:-1:-1;;;;;;1230:44:116;-1:-1:-1;;;;;1230:44:116;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:116;:42;;-1:-1:-1;;;;;;1323:42:116;-1:-1:-1;;;;;1323:42:116;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:116;:27;;-1:-1:-1;;;;;;1375:27:116;-1:-1:-1;;;;;1375:27:116;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:116;:37;;-1:-1:-1;;;;;;1412:37:116;-1:-1:-1;;;;;1412:37:116;;;;;;;;;;875:30:117;;;;;:::i;:::-;317:2:122;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:122;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:122;501:19;;494:33;559:3;544:19;875:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:117;:56;;-1:-1:-1;;;;;;851:56:117;-1:-1:-1;;;;;851:56:117;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:122;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:122;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:122;1061:19;;1054:33;1119:3;1104:19;941:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:117;:56;;-1:-1:-1;;;;;;917:56:117;-1:-1:-1;;;;;917:56:117;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:122;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:122;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:122;1621:19;;1614:33;1679:3;1664:19;1007:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:117;:56;;-1:-1:-1;;;;;;983:56:117;-1:-1:-1;;;;;983:56:117;;;;;;;;;;342:5137:110;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:122:-;342:5137:110;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002e45760003560e01c806385226c811162000199578063c45a015511620000e9578063dfe274a91162000097578063e27d5153116200007a578063e27d515314620005d1578063fa7626d414620005e8578063fbfa77cf14620005f657600080fd5b8063dfe274a914620005b3578063e20c9f7114620005c757600080fd5b8063cf06c7b711620000cc578063cf06c7b71462000571578063d21220a71462000588578063dd1d2599146200059c57600080fd5b8063c45a01551462000549578063c80916d4146200055d57600080fd5b8063b5508aa91162000147578063b716db66116200012a578063b716db66146200050f578063b86161951462000519578063ba414fa6146200053f57600080fd5b8063b5508aa914620004f1578063b62654fb14620004fb57600080fd5b8063916a17c6116200017c578063916a17c614620004bf5780639fbcc9ad14620004c9578063ad9b047514620004dd57600080fd5b806385226c81146200049c578063864f784514620004b557600080fd5b8063329696ac116200025557806358161a4211620002035780637d499aa411620001e65780637d499aa4146200045d5780638406c079146200047157806385094f75146200048557600080fd5b806358161a42146200041c57806366d9a9a0146200044457600080fd5b80633e5e3c2311620002385780633e5e3c2314620003f45780633f7286f414620003fe57806351160630146200040857600080fd5b8063329696ac14620003e05780633c46c58614620003ea57600080fd5b8063151bcd2c11620002b357806325be124e116200029657806325be124e1462000392578063294402cc14620003a65780632e08d60214620003ba57600080fd5b8063151bcd2c14620003515780631ed7831c146200037957600080fd5b80630a9254e414620002e95780630c8548f514620002f55780630df6971f14620003265780630dfe1681146200033d575b600080fd5b620002f36200060a565b005b60335462000309906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620002f36200033736600462006eda565b62000616565b60215462000309906001600160a01b031681565b620003686200036236600462006f18565b62000753565b6040516200031d9392919062006f86565b6200038362000810565b6040516200031d919062006ff6565b60235462000309906001600160a01b031681565b601f5462000309906001600160a01b031681565b620003d1620003cb36600462007135565b62000874565b6040519081526020016200031d565b620002f362000950565b620002f362000a5c565b6200038362000b8d565b6200038362000bef565b60255462000309906001600160a01b031681565b620004336200042d36600462007176565b62000c51565b60405190151581526020016200031d565b6200044e62000ca2565b6040516200031d9190620071ca565b60325462000309906001600160a01b031681565b602a5462000309906001600160a01b031681565b620002f362000496366004620072b7565b62000daa565b620004a66200139d565b6040516200031d9190620072d7565b620002f362001477565b6200044e62001a11565b601e5462000309906001600160a01b031681565b60315462000309906001600160a01b031681565b620004a662001b10565b601b5462000309906001600160a01b031681565b620002f362001bea565b620005306200052a3660046200735b565b62001d26565b6040516200031d9190620073d6565b6200043362001efe565b601c5462000309906001600160a01b031681565b601d5462000309906001600160a01b031681565b620003d16200058236600462006f18565b6200204a565b60225462000309906001600160a01b031681565b620003d1620005ad366004620073eb565b620021b3565b60205462000309906001600160a01b031681565b62000383620021e3565b620003d1620005e236600462006f18565b62002245565b600054620004339060ff1681565b60245462000309906001600160a01b031681565b6200061462002272565b565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03821615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200068557600080fd5b505afa1580156200069a573d6000803e3d6000fd5b50506034546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152620007369450909116915063595001b2906024015b602060405180830381865afa15801562000708573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072e91906200740e565b6000620025f2565b62000742828262002716565b6200074f82600062002716565b5050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000787906200742e565b80601f0160208091040260200160405190810160405280929190818152602001828054620007b5906200742e565b8015620008065780601f10620007da5761010080835404028352916020019162000806565b820191906000526020600020905b815481529060010190602001808311620007e857829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200086a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200084b575b5050505050905090565b600060018251116200090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200092b57620009238262002983565b91506200090d565b8160008151811062000941576200094162007483565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000614926001600160a01b03169163f698da259160048083019260209291908290030181865afa158015620009b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009dc9190620074b2565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a30573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a569190620074b2565b62002b0f565b600060405162000a6c9062006e11565b604051809103906000f08015801562000a89573d6000803e3d6000fd5b506040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527ff9ae35a200000000000000000000000000000000000000000000000000000000600482015290915062000b3f906001600160a01b038316906301ffc9a7906024015b602060405180830381865afa15801562000b11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b379190620074dd565b600162002c0f565b6040517f01ffc9a700000000000000000000000000000000000000000000000000000000808252600482015262000b8a906001600160a01b038316906301ffc9a79060240162000af3565b50565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200086a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200084b575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200086a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200084b575050505050905090565b81516000908290825b8181101562000c965762000c8b8387838151811062000c7d5762000c7d62007483565b6020026020010151620021b3565b925060010162000c5a565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000da15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000d8857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d345790505b5050505050815250508152602001906001019062000cc6565b50505050905090565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03821615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000e1957600080fd5b505afa15801562000e2e573d6000803e3d6000fd5b50505050600060405162000e429062006e11565b604051809103906000f08015801562000e5f573d6000803e3d6000fd5b509050600062000eeb604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b60315490915062000f08906001600160a01b031682600062002e08565b600062000f146200306d565b6001600160a01b0380861660408084019190915260345481517ff698da25000000000000000000000000000000000000000000000000000000008152915193945060009392169163f698da25916004808201926020929091908290030181865afa15801562000f87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fad9190620074b2565b60345460315460405192935060009283926001600160a01b03908116926326e0a19692911690889062000fe5908990602001620074fb565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b169091526200103993929160248101620075fa565b600060405180830381865afa15801562001057573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010819190810190620076d7565b60315491935091506200109e906001600160a01b03168762002716565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f03fc2a7e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200112457600080fd5b505af115801562001139573d6000803e3d6000fd5b50506034546031546040516001600160a01b0392831694506326e0a196935091169088906200116d908990602001620074fb565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16909152620011c193929160248101620075fa565b600060405180830381865afa158015620011df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012099190810190620076d7565b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f03fc2a7e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200129157600080fd5b505af1158015620012a6573d6000803e3d6000fd5b50506031546001600160a01b03169150631626ba7e90506200132f8486601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b836040518363ffffffff1660e01b81526004016200134f929190620077e2565b602060405180830381865afa1580156200136d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013939190620077fd565b5050505050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000da1578382906000526020600020018054620013e3906200742e565b80601f016020809104026020016040519081016040528092919081815260200182805462001411906200742e565b8015620014625780601f10620014365761010080835404028352916020019162001462565b820191906000526020600020905b8154815290600101906020018083116200144457829003601f168201915b505050505081526020019060010190620013c1565b60006001604051620014899062006e1f565b908152602001604051809103906000f080158015620014ac573d6000803e3d6000fd5b50905060006002604051620014c19062006e1f565b908152602001604051809103906000f080158015620014e4573d6000803e3d6000fd5b506034546031546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506200153b9291169063595001b290602401620006ea565b60315460009062001557906001600160a01b03166001620031f5565b6000815181106200156c576200156c62007483565b6020026020010151905060008067ffffffffffffffff8111156200159457620015946200700b565b604051908082528060200260200182016040528015620015be578160200160208202803683370190505b50603154909150620015dc906001600160a01b031683600162002e08565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016689190620074b2565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152949550909384936001600160a01b03908116936326e0a19693620016d29391909216918a918a90600401620075fa565b600060405180830381865afa158015620016f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200171a9190810190620076d7565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152939550919350620017569216908484600062003487565b6040517f44d7f0a400000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d906344d7f0a4906024016020604051808303816000875af1158015620017c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e89190620074dd565b5060315462001801906001600160a01b03168762002716565b60315460408051808201909152602d546001600160a01b039081168252602e5460208301526200185692169084847f03fc2a7e0000000000000000000000000000000000000000000000000000000062003487565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f03fc2a7e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620018dc57600080fd5b505af1158015620018f1573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a19694506200195793909216918a91908a90600401620075fa565b600060405180830381865afa15801562001975573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200199f9190810190620076d7565b5050603154620019b9906001600160a01b03168862002716565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152620019ef9216908484600062003487565b60315462001a08906001600160a01b0316600062002716565b50505050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000da15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001af757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001aa35790505b5050505050815250508152602001906001019062001a35565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000da157838290600052602060002001805462001b56906200742e565b80601f016020809104026020016040519081016040528092919081815260200182805462001b84906200742e565b801562001bd55780601f1062001ba95761010080835404028352916020019162001bd5565b820191906000526020600020905b81548152906001019060200180831162001bb757829003601f168201915b50505050508152602001906001019062001b34565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000614946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562001c66573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c8c9190620074b2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562001cee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d1491906200740e565b6034546001600160a01b0316620025f2565b6060600183511162001dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162000904565b600062001dc884516200204a565b67ffffffffffffffff81111562001de35762001de36200700b565b60405190808252806020026020018201604052801562001e0d578160200160208202803683370190505b50905060005b60018551111562001ef4578360011660010362001e715784600185038151811062001e425762001e4262007483565b602002602001015182828151811062001e5f5762001e5f62007483565b60200260200101818152505062001ed8565b8451846001010362001e96576000801b82828151811062001e5f5762001e5f62007483565b84846001018151811062001eae5762001eae62007483565b602002602001015182828151811062001ecb5762001ecb62007483565b6020026020010181815250505b60010160028404935062001eec8562002983565b945062001e13565b5090505b92915050565b60008054610100900460ff161562001f1f5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620020455760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001fc7917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162007841565b60408051601f198184030181529082905262001fe3916200788b565b6000604051808303816000865af19150503d806000811462002022576040519150601f19603f3d011682016040523d82523d6000602084013e62002027565b606091505b5091505080806020019051810190620020419190620074dd565b9150505b919050565b6000600182116200205d57506000919050565b60008270010000000000000000000000000000000081106200208e57608093841c936200208b9083620078d8565b91505b680100000000000000008410620020b457604093841c93620020b19083620078d8565b91505b6401000000008410620020d657602093841c93620020d39083620078d8565b91505b620100008410620020f657601093841c93620020f39083620078d8565b91505b61010084106200211557600893841c93620021129083620078d8565b91505b601084106200213357600493841c93620021309083620078d8565b91505b600484106200215157600293841c936200214e9083620078d8565b91505b600284106200216a5762002167600183620078d8565b91505b6000816200217b81196001620078d8565b16905081811480156200218e5750600083115b156200219d5750909392505050565b620021aa836001620078d8565b95945050505050565b60008183108015620021cd578360005282602052620021d6565b82600052836020525b5050604060002092915050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200086a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200084b575050505050905090565b6000808219600101831683145b83156200226a57600193841c93919091019062002252565b900392915050565b6200227c62003e47565b6025546040516001600160a01b0390911690620022999062006e2d565b6001600160a01b039091168152602001604051809103906000f080158015620022c6573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200244e94938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562002387573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023ad9190620074b2565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200243762004209565b6031546001600160a01b03169493929190620042e3565b6040516200245c9062006e3b565b604051809103906000f08015801562002479573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620024c09062006e49565b604051809103906000f080158015620024dd573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620025249062006e57565b604051809103906000f08015801562002541573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556034546040519116906200258a9062006e65565b6001600160a01b039091168152602001604051809103906000f080158015620025b7573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b806001600160a01b0316826001600160a01b0316146200074f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620026929060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620026cb9190620078ee565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162002704919062007943565b60405180910390a16200074f62004516565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200278557600080fd5b505af11580156200279a573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200281a57600080fd5b505af11580156200282f573d6000803e3d6000fd5b50506040516001600160a01b038481168252851692507f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859915060200160405180910390a26034546040517f8f7984ed0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690638f7984ed90602401600060405180830381600087803b158015620028d457600080fd5b505af1158015620028e9573d6000803e3d6000fd5b50506034546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526200074f9450909116915063595001b290602401602060405180830381865afa15801562002956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200297c91906200740e565b82620025f2565b6060806000835190508060011660010362002a40576002810460010167ffffffffffffffff811115620029ba57620029ba6200700b565b604051908082528060200260200182016040528015620029e4578160200160208202803683370190505b50915062002a1584600183038151811062002a035762002a0362007483565b60200260200101516000801b620021b3565b8260018451038151811062002a2e5762002a2e62007483565b60200260200101818152505062002a8d565b6002810467ffffffffffffffff81111562002a5f5762002a5f6200700b565b60405190808252806020026020018201604052801562002a89578160200160208202803683370190505b5091505b6000805b6001830381101562002b055762002ad686828151811062002ab65762002ab662007483565b602002602001015187836001018151811062000c7d5762000c7d62007483565b84838151811062002aeb5762002aeb62007483565b602090810291909101015260019091019060020162002a91565b5091949350505050565b8082146200074f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b9d9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162002bd6919062007981565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620027049190620079cd565b801515821515146200074f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002ca19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262002d0c576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002d43565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002d52919062007a0b565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162002dbd576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002df4565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002704919062007a5d565b905090565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002e7757600080fd5b505af115801562002e8c573d6000803e3d6000fd5b50505050801562002f70576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002f1357600080fd5b505af115801562002f28573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618360405162002f67919062007a9b565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062002fbd908590859060040162007ab0565b600060405180830381600087803b15801562002fd857600080fd5b505af115801562002fed573d6000803e3d6000fd5b50506034546040516200306893506001600160a01b039091169150636108c5329086906200302090879060200162007a9b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040162000af39291906001600160a01b03929092168252602082015260400190565b505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915262002e037fdfe0aea12481b6861fe85f311f9e24a0b5f7886a445111af3b17dccfa27d99656040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b60408051610140810182526021546001600160a01b03908116825260225416602082015260009181018290526001606082810182905260808301919091524260a0830152600260c0830152610e1060e08301526101008201929092527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b41426101208201528267ffffffffffffffff8111156200329457620032946200700b565b604051908082528060200260200182016040528015620032e357816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620032b35790505b50915060005b82518110156200339257604080516060810182526038546001600160a01b031681528151602080820185905291929183019101604051602081830303815290604052805190602001208152602001836040516020016200334a919062007ad6565b60405160208183030381529060405281525083828151811062003371576200337162007483565b60200260200101819052508080620033899062007b70565b915050620032e9565b508051602a54606083015160c08401516200348093926000927f095ea7b300000000000000000000000000000000000000000000000000000000926001600160a01b0390921691620033e5919062007bab565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260006200346b62004209565b6001600160a01b038a169493929190620042e3565b5092915050565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525090506000620036746200366c83602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620035da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036009190620074b2565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b87906200465d565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620036e957600080fd5b505af1158015620036fe573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af115801562003776573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200379c9190620074dd565b50604080516002808252606082018352600092602083019080368337019050509050856000015181600081518110620037d957620037d962007483565b60200260200101906001600160a01b031690816001600160a01b03168152505085602001518160018151811062003814576200381462007483565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090508360600151816000815181106200386a576200386a62007483565b60200260200101818152505083608001518160018151811062003891576200389162007483565b602090810291909101015260408051600280825260608201909252600091816020015b62003924604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b815260200190600190039081620038b4579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e001518152602001620039ac8a600262004787565b8152602001896060015181526020018b89604051602001620039d092919062007bc5565b60405160208183030381529060405281525081600081518110620039f857620039f862007483565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e00151815260200162003a7287600062004787565b815260200186606001518152602001858152508160018151811062003a9b5762003a9b62007483565b602002602001018190525060006040518060600160405280600067ffffffffffffffff81111562003ad05762003ad06200700b565b60405190808252806020026020018201604052801562003b1f57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162003aef5790505b508152602001600060405190808252806020026020018201604052801562003b7657816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162003b465790505b508152602001600060405190808252806020026020018201604052801562003bcd57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162003b9d5790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003c4657600080fd5b505af115801562003c5b573d6000803e3d6000fd5b5050507fffffffff000000000000000000000000000000000000000000000000000000008816905062003d13576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b9062003cd990879087908790879060040162007cc7565b600060405180830381600087803b15801562003cf457600080fd5b505af115801562003d09573d6000803e3d6000fd5b5050505062003e3a565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562003d9b57600080fd5b505af115801562003db0573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b915062003e0590879087908790879060040162007cc7565b600060405180830381600087803b15801562003e2057600080fd5b505af115801562003e35573d6000803e3d6000fd5b505050505b5050505050505050505050565b62003e51620048d4565b62003e916040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062004d37565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f6200000000000000000000000000000000000000000000000000000000009181019190915262003f149062004d37565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c0000000000000000000000000000000000000000000000000000009181019190915262003f979062004d37565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462003ff6929182169116683635c9adc5dea0000062004ebd565b602254602d546200401e916001600160a01b039081169116683635c9adc5dea0000062004ebd565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062004064576200406462007483565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062004098576200409862007483565b6001600160a01b039283166020918202929092010152602f54825191169082906002908110620040cc57620040cc62007483565b6001600160a01b039283166020918202929092010152601c54601b54601e5462004106939283169291821691859160029116600062004ecc565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200415e939283169291821691859160029116600162004ecc565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620041b59392831692918216918591600291168162004ecc565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462000b8a929182169116683635c9adc5dea0000062004ebd565b604080516002808252606082810190935260009190816020015b60408051808201909152600080825260208201528152602001906001900390816200422357505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062004284576200428462007483565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e5491810191909152815182906001908110620042cd57620042cd62007483565b602002602001018190525062001ef88162004fd0565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200434a9190620074b2565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620043919a9998979695949392919062007e92565b602060405180830381865afa158015620043af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043d59190620074b2565b9050620043e28362004fd0565b9250606060005b84518110156200445f578162004425848784815181106200440e576200440e62007483565b60200260200101516200465d90919063ffffffff16565b6040516020016200443892919062007f09565b60405160208183030381529060405291508080620044569062007b70565b915050620043e9565b50886001600160a01b0316636a7612028989898960008060008060008b6040516020016200448e91906200788b565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620044c49a9998979695949392919062007f3c565b6020604051808303816000875af1158015620044e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200450a9190620074dd565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200462f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620045ca929160200162007841565b60408051601f1981840301815290829052620045e6916200788b565b6000604051808303816000865af19150503d806000811462004625576040519150601f19603f3d011682016040523d82523d6000602084013e6200462a565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015620046de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004704919062007fc3565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc83610100015103620047ba576001175b82610120015115620047ca576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063283610140015103620048005760081762004831565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce836101400151036200483157600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce8361016001510362004862576010175b600182600381111562004879576200487962007e27565b03620048885760201762001ef8565b60028260038111156200489f576200489f62007e27565b03620048ae5760401762001ef8565b6003826003811115620048c557620048c562007e27565b0362001ef85760601792915050565b620049146040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062004d37565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620049979062004d37565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262004a1a9062005109565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062004a639062006e73565b604051809103906000f08015801562004a80573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562004ae457600080fd5b505af115801562004af9573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062004b1c9062006e81565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562004b50573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562004bdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c0391906200740e565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562004ca157600080fd5b505af115801562004cb6573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b15801562004d1b57600080fd5b505af115801562004d30573d6000803e3d6000fd5b5050505050565b604080518082019091526000808252602082015260008260405160200162004d6091906200788b565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562004de5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e0b91906200740e565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062004e62908490889060040162008002565b600060405180830381600087803b15801562004e7d57600080fd5b505af115801562004e92573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b62003068838383600062005116565b6000866001600160a01b0316631688f0b98763b63e800d60e01b8888600089600080600060405160240162004f08979695949392919062008026565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825262004f7f9291879060040162008090565b6020604051808303816000875af115801562004f9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004fc591906200740e565b979650505050505050565b606060005b82518110156200510257600062004fee826001620078d8565b90505b8351811015620050ec5783818151811062005010576200501062007483565b6020026020010151600001516001600160a01b03168483815181106200503a576200503a62007483565b6020026020010151600001516001600160a01b03161115620050d75760008483815181106200506d576200506d62007483565b602002602001015190508482815181106200508c576200508c62007483565b6020026020010151858481518110620050a957620050a962007483565b602002602001018190525080858381518110620050ca57620050ca62007483565b6020026020010181905250505b80620050e38162007b70565b91505062004ff1565b5080620050f98162007b70565b91505062004fd5565b5090919050565b60006200348082620053ab565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291516000928716916200519a916200788b565b6000604051808303816000865af19150503d8060008114620051d9576040519150601f19603f3d011682016040523d82523d6000602084013e620051de565b606091505b50915050600081806020019051810190620051fa9190620074b2565b90506200524d8462005246876200523f7f70a08231000000000000000000000000000000000000000000000000000000006200523860058d620054f9565b9062005539565b9062005572565b906200559b565b8215620053a35760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b03891691620052c691906200788b565b6000604051808303816000865af19150503d806000811462005305576040519150601f19603f3d011682016040523d82523d6000602084013e6200530a565b606091505b50915050600081806020019051810190620053269190620074b2565b90508286101562005351576200533d8684620080c4565b620053499082620080c4565b90506200536c565b6200535d8387620080c4565b620053699082620078d8565b90505b6200139381620052467f18160ddd000000000000000000000000000000000000000000000000000000006200523860058d620054f9565b505050505050565b60008082604051602001620053c191906200788b565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562005443573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200546991906200740e565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620054c0908590879060040162008002565b600060405180830381600087803b158015620054db57600080fd5b505af1158015620054f0573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262005532565b6002820180546001810182556000918252602082206001600160a01b0384169101558262005532565b6200074f8282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200561457602002820191906000526020600020905b815481526020019060010190808311620055ff575b50505050509050600083620056298362005a75565b6040516020016200563c92919062007841565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a168352815292812091945090929091620056a8918691889101620080da565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620056e357620056e18762005b22565b505b6001600160a01b0385166000908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051909183916200573c918791899101620080da565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200578391906200788b565b600060405180830381855afa9150503d8060008114620057c0576040519150601f19603f3d011682016040523d82523d6000602084013e620057c5565b606091505b509150620057e2905081620057dc88602062007bab565b62005b2f565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562005862573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058889190620074b2565b905080821462005967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000904565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620059e457600080fd5b505af1158015620059f9573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562005a6160028b01600062006e8f565b896004016000905550505050505050505050565b606060008251602062005a89919062007bab565b67ffffffffffffffff81111562005aa45762005aa46200700b565b6040519080825280601f01601f19166020018201604052801562005acf576020820181803683370190505b50905060005b83518110156200348057600084828151811062005af65762005af662007483565b60200260200101519050808260200260200184015250808062005b199062007b70565b91505062005ad5565b600062001ef88262005bd1565b6000806000602085511162005b4657845162005b49565b60205b905060005b8181101562005bc75762005b6481600862007bab565b8662005b718388620078d8565b8151811062005b845762005b8462007483565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005bbe8162007b70565b91505062005b4e565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562005c4357602002820191906000526020600020905b81548152602001906001019080831162005c2e575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062005ca792508591879101620080da565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005d5e576001600160a01b0384166000908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162005d2e918591879101620080da565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362005d6c8362006ccc565b60405160200162005d7f92919062007841565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005def57600080fd5b505af115801562005e04573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005e2591906200788b565b600060405180830381855afa9150503d806000811462005e62576040519150601f19603f3d011682016040523d82523d6000602084013e62005e67565b606091505b50915062005e8490508162005e7e87602062007bab565b62006d79565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562005eff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005f29919081019062008178565b50905080516001036200635b5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062005f815762005f8162007483565b60200260200101516040518363ffffffff1660e01b815260040162005fbb9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005fd9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fff9190620074b2565b9050806200606a577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200603f576200603f62007483565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462006147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162000904565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200617f929190620080da565b6040516020818303038152906040528051906020012085600081518110620061ab57620061ab62007483565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1816000815181106200621d576200621d62007483565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262006280918a918c9101620080da565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162006302918a918c9101620080da565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555062006ac4565b60018151111562006a395760005b815181101562006a325760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620063bd57620063bd62007483565b60200260200101516040518363ffffffff1660e01b8152600401620063f79291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200643b9190620074b2565b905080620064a5577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200647a576200647a62007483565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a858581518110620064ed57620064ed62007483565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b1580156200657d57600080fd5b505af115801562006592573d6000803e3d6000fd5b50505050600060608a6001600160a01b031687604051620065b491906200788b565b600060405180830381855afa9150503d8060008114620065f1576040519150601f19603f3d011682016040523d82523d6000602084013e620065f6565b606091505b5090925090506200660e8162005e7e8b602062007bab565b95508180156200663d57507f133700000000000000000000000000000000000000000000000000000000000086145b1562006947577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200667b929190620080da565b60405160208183030381529060405280519060200120888881518110620066a657620066a662007483565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062006717576200671762007483565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f16835284528082209051929390926200677a918d918f9101620080da565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162006831929190620080da565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620068b457620068b462007483565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200692557600080fd5b505af11580156200693a573d6000803e3d6000fd5b5050505050505062006a32565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200698f576200698f62007483565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562006a0057600080fd5b505af115801562006a15573d6000803e3d6000fd5b50505050505050808062006a299062007b70565b91505062006369565b5062006ac4565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162000904565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162006b209188918a9101620080da565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662006bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162000904565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016905562006c3b60028a01600062006e8f565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162006c999188918a9101620080da565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062006ce0919062007bab565b67ffffffffffffffff81111562006cfb5762006cfb6200700b565b6040519080825280601f01601f19166020018201604052801562006d26576020820181803683370190505b50905060005b83518110156200348057600084828151811062006d4d5762006d4d62007483565b60200260200101519050808260200260200184015250808062006d709062007b70565b91505062006d2c565b6000806000602085511162006d9057845162006d93565b60205b905060005b8181101562005bc75762006dae81600862007bab565b8662006dbb8388620078d8565b8151811062006dce5762006dce62007483565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006e088162007b70565b91505062006d98565b6102d980620081da83390190565b61030680620084b383390190565b61237a80620087b983390190565b61013c806200ab3383390190565b610809806200ac6f83390190565b610200806200b47883390190565b611246806200b67883390190565b610d06806200c8be83390190565b6153a2806200d5c483390190565b508054600082559060005260206000209081019062000b8a91905b8082111562006ec0576000815560010162006eaa565b5090565b6001600160a01b038116811462000b8a57600080fd5b6000806040838503121562006eee57600080fd5b823562006efb8162006ec4565b9150602083013562006f0d8162006ec4565b809150509250929050565b60006020828403121562006f2b57600080fd5b5035919050565b60005b8381101562006f4f57818101518382015260200162006f35565b50506000910152565b6000815180845262006f7281602086016020860162006f32565b601f01601f19169290920160200192915050565b6001600160a01b0384168152826020820152606060408201526000620021aa606083018462006f58565b600081518084526020808501945080840160005b8381101562006feb5781516001600160a01b03168752958201959082019060010162006fc4565b509495945050505050565b60208152600062005532602083018462006fb0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200706157620070616200700b565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200709357620070936200700b565b604052919050565b600067ffffffffffffffff821115620070b857620070b86200700b565b5060051b60200190565b600082601f830112620070d457600080fd5b81356020620070ed620070e7836200709b565b62007067565b82815260059290921b840181019181810190868411156200710d57600080fd5b8286015b848110156200712a578035835291830191830162007111565b509695505050505050565b6000602082840312156200714857600080fd5b813567ffffffffffffffff8111156200716057600080fd5b6200716e84828501620070c2565b949350505050565b6000806000606084860312156200718c57600080fd5b83359250602084013567ffffffffffffffff811115620071ab57600080fd5b620071b986828701620070c2565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620072a8578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620072925783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200724e565b50978a01979550505091870191600101620071f2565b50919998505050505050505050565b600060208284031215620072ca57600080fd5b8135620055328162006ec4565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200734e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200733b85835162006f58565b94509285019290850190600101620072fe565b5092979650505050505050565b600080604083850312156200736f57600080fd5b823567ffffffffffffffff8111156200738757600080fd5b6200739585828601620070c2565b95602094909401359450505050565b600081518084526020808501945080840160005b8381101562006feb57815187529582019590820190600101620073b8565b602081526000620055326020830184620073a4565b60008060408385031215620073ff57600080fd5b50508035926020909101359150565b6000602082840312156200742157600080fd5b8151620055328162006ec4565b600181811c908216806200744357607f821691505b6020821081036200747d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215620074c557600080fd5b5051919050565b805180151581146200204557600080fd5b600060208284031215620074f057600080fd5b6200553282620074cc565b81516001600160a01b03168152610180810160208301516200752860208401826001600160a01b03169052565b5060408301516200754460408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a08301516200757160a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151620075a78285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200716e606085018262006f58565b6001600160a01b03851681526080602082015260006200761e6080830186620075c6565b828103604084015262007632818662006f58565b9050828103606084015262004fc58185620073a4565b8051620020458162006ec4565b805163ffffffff811681146200204557600080fd5b600082601f8301126200767c57600080fd5b815167ffffffffffffffff8111156200769957620076996200700b565b620076ae6020601f19601f8401160162007067565b818152846020838601011115620076c457600080fd5b6200716e82602083016020870162006f32565b6000808284036101a0811215620076ed57600080fd5b61018080821215620076fe57600080fd5b620077086200703a565b9150620077158562007648565b8252620077256020860162007648565b6020830152620077386040860162007648565b604083015260608501516060830152608085015160808301526200775f60a0860162007655565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012062007794818701620074cc565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff811115620077ca57600080fd5b620077d8858286016200766a565b9150509250929050565b8281526040602082015260006200716e604083018462006f58565b6000602082840312156200781057600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146200553257600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200787d81600485016020870162006f32565b919091016004019392505050565b600082516200789f81846020870162006f32565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111562001ef85762001ef8620078a9565b6040815260006200792c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200792c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b604081526000620079bf60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b604081526000620079bf60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062007a4960408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200716e818562006f58565b60408152600062007a4960408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b602081526000620055326020830184620075c6565b60408152600062007ac56040830185620075c6565b905082151560208301529392505050565b81516001600160a01b031681526101408101602083015162007b0360208401826001600160a01b03169052565b50604083015162007b1f60408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362007ba45762007ba4620078a9565b5060010190565b808202811582820484141762001ef85762001ef8620078a9565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b1681526000825162007c0481601485016020870162006f32565b919091016014019392505050565b6000826060808201846000805b600381101562007cba578584038952825180518086526020918201918087019190600582901b88018101865b8381101562007ca257898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c905262007c8e8c84018262006f58565b968401969584019592505060010162007c4b565b509c81019c9750959095019450505060010162007c1f565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b8381101562007d0d5781516001600160a01b03168552938201939082019060010162007ce6565b50508683038188015262007d22838b620073a4565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b8381101562007dff57601f1988840301855281516101608151855287820151888601528882015162007d848a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e08083015190860152610100808301519086015261012080830151908601526101409182015191850181905262007dea8186018362006f58565b96880196945050509085019060010162007d48565b505089810360608b015262007e15818c62007c12565b9e9d5050505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811062007e8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262007ebe8285018d62006f58565b925062007ecf606085018c62007e56565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b6000835162007f1d81846020880162006f32565b83519083019062007f3381836020880162006f32565b01949350505050565b60006101406001600160a01b03808e1684528c602085015281604085015262007f688285018d62006f58565b915062007f79606085018c62007e56565b8960808501528860a08501528760c085015280871660e08501528086166101008501525082810361012084015262007fb2818562006f58565b9d9c50505050505050505050505050565b60008060006060848603121562007fd957600080fd5b835160ff8116811462007feb57600080fd5b602085015160409095015190969495509392505050565b6001600160a01b03831681526040602082015260006200716e604083018462006f58565b60006101008083526200803c8184018b62006fb0565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b0384168152606060208201526000620080b4606083018562006f58565b9050826040830152949350505050565b8181038181111562001ef85762001ef8620078a9565b825160009082906020808701845b838110156200810657815185529382019390820190600101620080e8565b5050948252509092019392505050565b600082601f8301126200812857600080fd5b815160206200813b620070e7836200709b565b82815260059290921b840181019181810190868411156200815b57600080fd5b8286015b848110156200712a57805183529183019183016200815f565b600080604083850312156200818c57600080fd5b825167ffffffffffffffff80821115620081a557600080fd5b620081b38683870162008116565b93506020850151915080821115620081ca57600080fd5b50620077d8858286016200811656fe608060405234801561001057600080fd5b506102b9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e610049366004610142565b610075565b604051901515815260200160405180910390f35b61004e61007036600461018b565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600080610121606088016040890161024d565b73ffffffffffffffffffffffffffffffffffffffff16149695505050505050565b60006020828403121561015457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461018457600080fd5b9392505050565b60008060008060008587036101e08112156101a557600080fd5b610180808212156101b557600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101da57600080fd5b908701906060828a0312156101ee57600080fd5b9093506101c0870135908082111561020557600080fd5b818801915088601f83011261021957600080fd5b81358181111561022857600080fd5b89602082850101111561023a57600080fd5b9699959850939650602001949392505050565b60006020828403121561025f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461018457600080fdfea2646970667358221220ddb52044c4a9a42096bd042494f29ae41dc7911347f4cb6455aaa7a39eab2d1664736f6c63430008130033608060405234801561001057600080fd5b5060405161030638038061030683398101604081905261002f91610037565b600055610050565b60006020828403121561004957600080fd5b5051919050565b6102a78061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e61004936600461012b565b610075565b604051901515815260200160405180910390f35b61004e610070366004610174565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054610120906060880135610236565b159695505050505050565b60006020828403121561013d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461016d57600080fd5b9392505050565b60008060008060008587036101e081121561018e57600080fd5b6101808082121561019e57600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101c357600080fd5b908701906060828a0312156101d757600080fd5b9093506101c087013590808211156101ee57600080fd5b818801915088601f83011261020257600080fd5b81358181111561021157600080fd5b89602082850101111561022357600080fd5b9699959850939650602001949392505050565b60008261026c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fea26469706673582212205dfaf57d0502300f4f46fee2111ad23463fa3ccb371e514ca536b55c2f60166364736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a26469706673582212202060cf2d0df53157c6830ee7c01d6f04da336eb7e3716a0f7fc14f4a23049dbe64736f6c63430008130033","sourceMap":"342:5137:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;406:116;;;:::i;:::-;;595:17:106;;;;;-1:-1:-1;;;;;595:17:106;;;;;;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;595:17:106;;;;;;;;573:490:110;;;;;;:::i;:::-;;:::i;748:20:117:-;;;;;-1:-1:-1;;;;;748:20:117;;;1586:74:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2161:134:33:-;;;:::i;:::-;;;;;;;:::i;800:20:117:-;;;;;-1:-1:-1;;;;;800:20:117;;;1025:26:116;;;;;-1:-1:-1;;;;;1025:26:116;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;5564:25:122;;;5552:2;5537:18;987:253:45;5418:177:122;3024:158:107;;;:::i;3532:264:110:-;;;:::i;2930:133:33:-;;;:::i;2631:141::-;;;:::i;1125:32:115:-;;;;;-1:-1:-1;;;;;1125:32:115;;;452:451:45;;;;;;:::i;:::-;;:::i;:::-;;;6612:14:122;;6605:22;6587:41;;6575:2;6560:18;452:451:45;6447:187:122;2447:178:33;;;:::i;:::-;;;;;;;:::i;572:17:106:-;;;;;-1:-1:-1;;;;;572:17:106;;;1232:22:115;;;;;-1:-1:-1;;;;;1232:22:115;;;3876:1601:110;;;;;;:::i;:::-;;:::i;2301:140:33:-;;;:::i;:::-;;;;;;;:::i;1468:1987:110:-;;;:::i;2778:146:33:-;;;:::i;978:41:116:-;;;;;-1:-1:-1;;;;;978:41:116;;;549:17:106;;;;;-1:-1:-1;;;;;549:17:106;;;1866:141:33;;;:::i;865:21:116:-;;;;;-1:-1:-1;;;;;865:21:116;;;2744:190:107;;;:::i;1246:1168:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;892:31:116:-;;;;;-1:-1:-1;;;;;892:31:116;;;929:43;;;;;-1:-1:-1;;;;;929:43:116;;;5179:952:45;;;;;;:::i;:::-;;:::i;774:20:117:-;;;;;-1:-1:-1;;;;;774:20:117;;;407:409:44;;;;;;:::i;:::-;;:::i;1057:36:116:-;;;;;-1:-1:-1;;;;;1057:36:116;;;2013:142:33;;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;1572:26:26:-;;;;;;;;;1100:19:115;;;;;-1:-1:-1;;;;;1100:19:115;;;406:116:110;502:13;:11;:13::i;:::-;406:116::o;573:490::-;712:34;;;;;-1:-1:-1;;;;;722:23:110;;;;712:34;;;6587:41:122;712:9:110;;;;6560:18:122;;712:34:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;825:13:110;;:31;;;;;-1:-1:-1;;;;;338:55:122;;;825:31:110;;;320:74:122;808:62:110;;-1:-1:-1;825:13:110;;;;-1:-1:-1;825:24:110;;293:18:122;;825:31:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:1;808:8;:62::i;:::-;918:43;932:5;950:9;918:13;:43::i;:::-;1012:44;1026:5;1052:1;1012:13;:44::i;:::-;573:490;;:::o;1586:74:107:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:134:33:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:33;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;987:253:45:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;13650:2:122;1067:63:45;;;13632:21:122;13689:2;13669:18;;;13662:30;13728:34;13708:18;;;13701:62;13799:5;13779:18;;;13772:33;13822:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:107:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:107;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:107;-1:-1:-1;;;;;3146:26:107;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;3532:264:110:-;3597:17;3617:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3655:52:110;;;;;3678:28;3655:52;;;14374:98:122;3597:38:110;;-1:-1:-1;3646:68:110;;-1:-1:-1;;;;;3655:22:110;;;;;14347:18:122;;3655:52:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3709:4;3646:8;:68::i;:::-;3733:49;;3756:25;3733:49;;;;;;14374:98:122;3724:65:110;;-1:-1:-1;;;;;3733:22:110;;;;;14347:18:122;;3733:49:110;14230:248:122;3724:65:110;3587:209;3532:264::o;2930:133:33:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:33;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:33;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;452:451:45:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;;452:451;-1:-1:-1;;;452:451:45:o;2447:178:33:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;3876:1601:110:-;4064:33;;;;;-1:-1:-1;;;;;4074:22:110;;;;4064:33;;;6587:41:122;4064:9:110;;;;6560:18:122;;4064:33:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4108:17;4128:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4108:38;;4156:54;4213:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:107;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:107;;;;;;;-1:-1:-1;;;;;7569:11:107;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;4213:21:110;4301:5;;4156:78;;-1:-1:-1;4285:38:110;;-1:-1:-1;;;;;4301:5:110;4156:78;4301:5;4285:7;:38::i;:::-;4392:40;4435:15;:13;:15::i;:::-;-1:-1:-1;;;;;4460:38:110;;;:27;;;;:38;;;;4573:13;;:31;;;;;;;4392:58;;-1:-1:-1;4547:23:110;;4573:13;;;:29;;:31;;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4742:13;;4808:5;;4824:30;;4547:57;;-1:-1:-1;4687:27:110;;;;-1:-1:-1;;;;;4742:13:110;;;;:44;;4808:5;;;4816:6;;4824:30;;4835:18;;4824:30;;;:::i;:::-;;;;-1:-1:-1;;4824:30:110;;;;;;4870:1;4856:16;;;;;;;;;4742:140;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4742:140:110;;;;;;;;;;;;:::i;:::-;4952:5;;4686:196;;-1:-1:-1;4686:196:110;-1:-1:-1;4930:35:110;;-1:-1:-1;;;;;4952:5:110;4960:4;4930:13;:35::i;:::-;5033:59;;;;;5049:42;5033:59;;;14374:98:122;5033:15:110;;;;14347:18:122;;5033:59:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5102:13:110;;5168:5;;5184:30;;-1:-1:-1;;;;;5102:13:110;;;;-1:-1:-1;5102:44:110;;-1:-1:-1;5168:5:110;;;5176:6;;5184:30;;5195:18;;5184:30;;;:::i;:::-;;;;-1:-1:-1;;5184:30:110;;;;;;5230:1;5216:16;;;;;;;;;5102:140;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5102:140:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5310:59:110;;;;;5326:42;5310:59;;;14374:98:122;5310:15:110;;;;14347:18:122;;5310:59:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5395:5:110;;-1:-1:-1;;;;;5395:5:110;;-1:-1:-1;5379:40:110;;-1:-1:-1;5420:38:110;5435:5;5442:15;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;5420:38:110;5460:9;5379:91;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3966:1511;;;;;;3876:1601;:::o;2301:140:33:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1468:1987:110;1577:26;1624:1;1606:20;;;;;:::i;:::-;5564:25:122;;;5552:2;5537:18;1606:20:110;;;;;;;;;;;;;;;;;;;;;;;1577:49;;1696:27;1744:1;1726:20;;;;;:::i;:::-;5564:25:122;;;5552:2;5537:18;1726:20:110;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1829:13:110;;1862:5;;1829:40;;;;;-1:-1:-1;;;;;1862:5:110;;;1829:40;;;320:74:122;1696:50:110;;-1:-1:-1;1812:71:110;;1829:13;;;:24;;293:18:122;;1829:40:110;152:248:122;1812:71:110;1961:5;;1894:54;;1951:19;;-1:-1:-1;;;;;1961:5:110;;1951:9;:19::i;:::-;1971:1;1951:22;;;;;;;;:::i;:::-;;;;;;;1894:79;;2045:22;2084:1;2070:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2070:16:110;-1:-1:-1;2148:5:110;;2045:41;;-1:-1:-1;2132:37:110;;-1:-1:-1;;;;;2148:5:110;2156:6;2148:5;2132:7;:37::i;:::-;2207:16;317:28:27;309:37;;-1:-1:-1;;;;;2226:11:110;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2371;;2424:5;;2440:9;;;;;;;;2304:27;2440:9;;;2371:86;;;;;2207:32;;-1:-1:-1;2304:27:110;;;;-1:-1:-1;;;;;2371:13:110;;;;:44;;:86;;2424:5;;;;;2432:6;;2451:5;;2371:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2371:86:110;;;;;;;;;;;;:::i;:::-;2482:5;;2467:56;;;;;;;;;2490:3;2467:56;-1:-1:-1;;;;;2467:56:110;;;;;;;;;;;2303:154;;-1:-1:-1;2303:154:110;;-1:-1:-1;2467:56:110;;2482:5;;2303:154;;2482:5;2467:6;:56::i;:::-;2564:21;;;;;;;;5564:25:122;;;2564:11:110;;;;5537:18:122;;2564:21:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2655:5:110;;2633:44;;-1:-1:-1;;;;;2655:5:110;2663:13;2633;:44::i;:::-;2778:5;;2763:89;;;;;;;;;2786:3;2763:89;-1:-1:-1;;;;;2763:89:110;;;;;;;;;;;;;2778:5;;2791;2798:9;2809:42;2763:6;:89::i;:::-;2948:59;;;;;2964:42;2948:59;;;14374:98:122;2948:15:110;;;;14347:18:122;;2948:59:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3017:13:110;;3070:5;;3086:9;;;;;;;;-1:-1:-1;3086:9:110;;3017:86;;;;;-1:-1:-1;;;;;3017:13:110;;;;-1:-1:-1;3017:44:110;;-1:-1:-1;3017:86:110;;3070:5;;;;3078:6;;3086:9;3097:5;;3017:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3017:86:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3195:5:110;;3173:43;;-1:-1:-1;;;;;3195:5:110;3203:12;3173:13;:43::i;:::-;3306:5;;3291:56;;;;;;;;;3314:3;3291:56;-1:-1:-1;;;;;3291:56:110;;;;;;;;;;;;;3306:5;;3319;3326:9;3306:5;3291:6;:56::i;:::-;3417:5;;3395:53;;-1:-1:-1;;;;;3417:5:110;;3395:13;:53::i;:::-;1508:1947;;;;;;;1468:1987::o;2778:146:33:-;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:107;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:107;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;21160:55:122;;;2840:61:107;;;21142:74:122;21232:18;;;21225:34;21115:18;;2840:61:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:107;2823:8;:104::i;1246:1168:45:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;21760:2:122;1350:64:45;;;21742:21:122;21799:2;21779:18;;;21772:30;21838:34;21818:18;;;21811:62;21909:6;21889:18;;;21882:34;21933:19;;1350:64:45;21558:400:122;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;21142:74:122;;;2221:17:26;21232:18:122;;;21225:34;2196:43:26;;;;;;;;;21115:18:122;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;5179:952:45:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;2013:142:33:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:33;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;1667:955:107:-;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:107;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;1819:38:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:107;:54;;;;-1:-1:-1;;;;;1803:54:107;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:107;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;23674:25:122;;;;-1:-1:-1;;;;;2216:13:107;23715:18:122;;;23708:83;23647:18;;2101:143:107;;;-1:-1:-1;;2101:143:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:107;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:107;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:107;:48;;;;-1:-1:-1;;;;;2366:48:107;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:107;:49;;;;-1:-1:-1;;;;;2478:49:107;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:107;:37;;;;-1:-1:-1;;;;;2537:37:107;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;2592:23:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:107;:30;;;;-1:-1:-1;;;;;2585:30:107;;;;;;;;;;1667:955::o;3622:277:26:-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;24258:2:122;24240:21;;;24297:2;24277:18;;;24270:30;24336:34;24331:2;24316:18;;24309:62;24407:7;24402:2;24387:18;;24380:35;24447:3;24432:19;;24056:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;:::-;;;;;;;;3876:6;:4;:6::i;4252:304:107:-;4327:15;;;;;-1:-1:-1;;;;;338:55:122;;4327:15:107;;;320:74:122;4327:8:107;;;;293:18:122;;4327:15:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4352:37:107;;;;;4366:4;4352:37;;;25801:41:122;;;25858:18;;;25851:50;;;25917:18;;;25910:50;;;25976:18;;;25969:50;4352:13:107;;-1:-1:-1;4352:13:107;;-1:-1:-1;25773:19:122;;4352:37:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4404:26:107;;-1:-1:-1;;;;;338:55:122;;;320:74;;4404:26:107;;;-1:-1:-1;4404:26:107;;-1:-1:-1;308:2:122;293:18;4404:26:107;;;;;;;4440:13;;:33;;;;;-1:-1:-1;;;;;338:55:122;;;4440:33:107;;;320:74:122;4440:13:107;;;;:26;;293:18:122;;4440:33:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4500:13:107;;:31;;;;;-1:-1:-1;;;;;338:55:122;;;4500:31:107;;;320:74:122;4483:66:107;;-1:-1:-1;4500:13:107;;;;-1:-1:-1;4500:24:107;;293:18:122;;4500:31:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4542:5;4483:8;:66::i;2493:990:45:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;26483:2:122;26465:21;;;26522:2;26502:18;;;26495:30;26561:34;26556:2;26541:18;;26534:62;26632:7;26627:2;26612:18;;26605:35;26672:3;26657:19;;26281:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;789:312:29:-;859:1;854:6;;:1;:6;;;850:245;;881:41;;;;;27595:2:122;27577:21;;;27634:2;27614:18;;;27607:30;27673:34;27668:2;27653:18;;27646:62;27744:4;27739:2;27724:18;;27717:32;27781:3;27766:19;;27393:398;881:41:29;;;;;;;;941:52;972:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:52;;;;;;:::i;:::-;;;;;;;;1012;1043:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1012:52;;;;;;:::i;7557:68:107:-;7550:75;;7437:195;:::o;4624:424::-;4746:15;;;;;-1:-1:-1;;;;;338:55:122;;4746:15:107;;;320:74:122;4746:8:107;;;;293:18:122;;4746:15:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:8;4771:133;;;4799:37;;;;;4813:4;4799:37;;;25801:41:122;;;25858:18;;;25851:50;;;25917:18;;;25910:50;;;25976:18;;;25969:50;4799:13:107;;;;25773:19:122;;4799:37:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4879:5;-1:-1:-1;;;;;4855:38:107;;4886:6;4855:38;;;;;;:::i;:::-;;;;;;;;4771:133;4913:13;;:38;;;;;-1:-1:-1;;;;;4913:13:107;;;;:20;;:38;;4934:6;;4942:8;;4913:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4970:13:107;;5014:18;;4961:80;;-1:-1:-1;;;;;;4970:13:107;;;;-1:-1:-1;4970:26:107;;4997:5;;5014:18;;5025:6;;5014:18;;;:::i;:::-;;;;;;;;;;;;;5004:29;;;;;;4970:64;;;;;;;;;;;;;;;-1:-1:-1;;;;;21160:55:122;;;;21142:74;;21247:2;21232:18;;21225:34;21130:2;21115:18;;20946:319;4961:80:107;4624:424;;;:::o;6286:146::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6380:45:107;6400:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6554:464:107;;;;;;;;-1:-1:-1;6554:464:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6841:19;6554:464;;;;;;;;6930:23;6554:464;;;;;;;;;;;6438:587;7638:1252;7819:319;;;;;;;;7859:6;;-1:-1:-1;;;;;7859:6:107;;;7819:319;;7889:6;;;7819:319;;;;7786:30;7819:319;;;;;;7859:6;7713:57;7819:319;;;;;;;;;;;;;8007:15;7819:319;;;;8039:1;7819:319;;;;8057:4;7819:319;;;;7859:6;7819:319;;;;;;8105:22;7819:319;;;;8279:1;8232:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8232:49:107;;;;;;;;;;;;;;;;8222:59;;8296:9;8291:278;8315:7;:14;8311:1;:18;8291:278;;;8363:195;;;;;;;;8431:4;;-1:-1:-1;;;;;8431:4:107;8363:195;;8469:22;;8363:195;8469:22;;;5564:25:122;;;8363:195:107;;;;;;5537:18:122;8469:22:107;;;;;;;;;;;;8459:33;;;;;;8363:195;;;;8534:8;8523:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;8363:195;;;8350:7;8358:1;8350:10;;;;;;;;:::i;:::-;;;;;;:208;;;;8331:3;;;;;:::i;:::-;;;;8291:278;;;-1:-1:-1;8666:18:107;;8770:7;;8793:23;;;;8780:10;;;;8632:251;;8666:18;;;8737:23;;-1:-1:-1;;;;;8770:7:107;;;;8780:36;;8793:23;8780:36;:::i;:::-;8714:103;;-1:-1:-1;;;;;21160:55:122;;;8714:103:107;;;21142:74:122;21232:18;;;21225:34;21115:18;;8714:103:107;;;-1:-1:-1;;8714:103:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8864:9:107;:7;:9::i;:::-;-1:-1:-1;;;;;8632:12:107;;;:251;;;;:12;:251::i;:::-;7776:1114;7638:1252;;;;:::o;2711:3375:115:-;2959:34;2996:503;;;;;;;;3036:5;:14;;;-1:-1:-1;;;;;2996:503:115;;;;;3074:5;:15;;;-1:-1:-1;;;;;2996:503:115;;;;;3121:1;-1:-1:-1;;;;;2996:503:115;;;;;3149:5;:15;;;2996:503;;;;3189:5;:16;;;2996:503;;;;3228:5;:13;;;2996:503;;;;;;3264:5;:13;;;2996:503;;;;3302:1;2996:503;;;;3323:18;2996:503;;;;3374:5;2996:503;;;;;;3465:23;2996:503;;;;3410:23;2996:503;;;2959:540;;3510:28;3553:83;3577:58;3592:12;3606:10;;;;;;;;;-1:-1:-1;;;;;3606:10:115;-1:-1:-1;;;;;3606:26:115;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;3577:58:115;3553:12;;:23;:83::i;:::-;3724:17;;3715:27;;;;;-1:-1:-1;;;;;338:55:122;;;3715:27:115;;;320:74:122;3510:126:115;;-1:-1:-1;3715:8:115;;;;293:18:122;;3715:27:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3759:22:115;;3799:7;;3809:23;;;;3752:81;;;;;-1:-1:-1;;;;;3799:7:115;;;3752:81;;;21142:74:122;21232:18;;;21225:34;;;;3752:38:115;;;-1:-1:-1;3752:38:115;;-1:-1:-1;21115:18:122;;3752:81:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3924:15:115;;;3937:1;3924:15;;;;;;;;3899:22;;3924:15;;;;;;;;;;-1:-1:-1;3924:15:115;3899:40;;3968:5;:15;;;3949:6;3956:1;3949:9;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;3949:35:115;;;-1:-1:-1;;;;;3949:35:115;;;;;4013:5;:14;;;3994:6;4001:1;3994:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3994:34:115;;;;:9;;;;;;;;;;:34;4119:16;;;4133:1;4119:16;;;;;;;;4085:31;;4119:16;;4133:1;;4119:16;;;;;;;;;-1:-1:-1;4119:16:115;4085:50;;4165:12;:23;;;4145:14;4160:1;4145:17;;;;;;;;:::i;:::-;;;;;;:43;;;;;4218:12;:22;;;4198:14;4213:1;4198:17;;;;;;;;:::i;:::-;;;;;;;;;;:42;4320:23;;;4341:1;4320:23;;;;;;;;;4287:30;;4320:23;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4320:23:115;;;;;;;;;;;;;;;;4287:56;;4413:508;;;;;;;;4458:1;4413:508;;;;4488:1;4413:508;;;;4513:5;:14;;;-1:-1:-1;;;;;4413:508:115;;;;;4553:5;:16;;;4413:508;;;;4594:5;:15;;;4413:508;;;;4632:5;:13;;;4413:508;;;;;;4668:5;:13;;;4413:508;;;;4706:5;:15;;;4413:508;;;;4742:63;4771:5;4778:26;4742:28;:63::i;:::-;4413:508;;;;4835:5;:16;;;4413:508;;;;4893:3;4898:11;4876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4413:508;;;4401:6;4408:1;4401:9;;;;;;;;:::i;:::-;;;;;;:520;;;;4987:533;;;;;;;;5032:1;4987:533;;;;5062:1;4987:533;;;;5095:1;-1:-1:-1;;;;;4987:533:115;;;;;5123:12;:23;;;4987:533;;;;5171:12;:22;;;4987:533;;;;5216:12;:20;;;4987:533;;;;;;5259:12;:20;;;4987:533;;;;5304:12;:22;;;4987:533;;;;5347:69;5376:12;5390:25;5347:28;:69::i;:::-;4987:533;;;;5446:12;:23;;;4987:533;;;;5494:15;4987:533;;;4975:6;4982:1;4975:9;;;;;;;;:::i;:::-;;;;;;:545;;;;5574:45;:153;;;;;;;;5662:1;5635:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5635:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;;;5693:1;5666:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5666:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;;;5724:1;5697:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5697:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;5796:6;:11;5787:21;;;;;-1:-1:-1;;;;;5796:11:115;;;5787:21;;;320:74:122;5574:153:115;;-1:-1:-1;5787:8:115;;;;293:18:122;;5787:21:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5822:28:115;;;;-1:-1:-1;5818:262:115;;5866:10;;:63;;;;;-1:-1:-1;;;;;5866:10:115;;;;:17;;:63;;5884:6;;5892:14;;5908:6;;5916:12;;5866:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5818:262;;;5960:32;;;;;14404:66:122;14392:79;;5960:32:115;;;14374:98:122;5960:15:115;;;;14347:18:122;;5960:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6006:10:115;;:63;;;;;-1:-1:-1;;;;;6006:10:115;;;;-1:-1:-1;6006:17:115;;-1:-1:-1;6006:63:115;;6024:6;;6032:14;;6048:6;;6056:12;;6006:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5818:262;2907:3179;;;;;;2711:3375;;;;;:::o;619:1105:106:-;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:106;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:106;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:106;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:106;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:106;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:106;;1223:9;;-1:-1:-1;1235:10:106;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:106;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:106;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:106;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:106;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:106;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:106;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:106;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:106;;;;;;;;;;;;-1:-1:-1;;1875:19:106;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:106;;;;;;;;;:11;;;;-1:-1:-1;1875:19:106;:11;;-1:-1:-1;;1875:11:106;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:106;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:119:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:119;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:119;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:119;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2224:661;;;2031:854;;;;;;:::o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;39379:74:122;;;2677:17:26;39469:18:122;;;39462:34;;;;2712:4:26;39512:18:122;;;39505:34;2489:11:26;;1671:64;2586:43;;39352:18:122;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;829:297:120:-;980:10;;;;972:25;;;;;;;;39724::122;;;;39765:18;;;39758:34;;;914:12:120;;939:7;;;;;;206:42;;972:7;;39697:18:122;;972:25:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:120;;-1:-1:-1;938:59:120;-1:-1:-1;1008:22:120;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:120;;;;;;40384:19:122;;;;40419:12;;;40412:28;;;;-1:-1:-1;;;40478:3:122;40474:16;;;;40492:66;40470:89;40456:12;;;40449:111;1068:25:120;;;;;;;;;40576:12:122;;;;1068:25:120;;;;;-1:-1:-1;;;829:297:120:o;3841:1483:121:-;3972:13;4081:18;4067:5;:10;;;:32;4063:91;;831:4;4115:28;4063:91;4238:5;:23;;;4234:80;;;925:4;4277:26;4234:80;4434:26;4408:5;:22;;;:52;4404:256;;1057:4;4476:42;4404:256;;;4565:26;4539:5;:22;;;:52;4535:125;;1120:4;4607:42;4535:125;4768:26;4743:5;:21;;;:51;4739:123;;1250:4;4810:41;4739:123;4968:26;4951:13;:43;;;;;;;;:::i;:::-;;4947:348;;1371:4;5010:38;4947:348;;;5086:26;5069:13;:43;;;;;;;;:::i;:::-;;5065:230;;1430:4;5128:38;5065:230;;;5204:26;5187:13;:43;;;;;;;;:::i;:::-;;5183:112;;1489:4;5246:38;3841:1483;;;;:::o;1332:965:115:-;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:115;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:115;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:115;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:115;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:115;;;1863:39;;;320:74:122;1780:73:115;;-1:-1:-1;1863:27:115;;;;;293:18:122;;1863:39:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:115;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:115;;;;-1:-1:-1;2012:36:115;;;:::i;:::-;-1:-1:-1;;;;;40903:15:122;;;40885:34;;40955:15;;40950:2;40935:18;;40928:43;40812:2;40797:18;2012:36:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:115;:49;;;;-1:-1:-1;;;;;1999:49:115;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:115;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;320:74:122;2228:8:115;;;;293:18:122;;2228:20:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:115;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:115;;;2258:32;;;320:74:122;2258:19:115;;;;-1:-1:-1;2258:19:115;;-1:-1:-1;293:18:122;;2258:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:933;1332:965::o;373:261:120:-;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:120;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:120;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;5564:25:122;;;489:33:120;-1:-1:-1;481:42:120;;206;;548:7;;5537:18:122;;548:11:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:120;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:120;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;20040:117:31:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;953:558:119:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:119;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:119;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;1297:495:120:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:120;;;;:::i;:::-;;;;1405:356;;;-1:-1:-1;1777:8:120;;1297:495;-1:-1:-1;1297:495:120:o;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;20436:825::-;20600:38;;;-1:-1:-1;;;;;338:55:122;;;20600:38:31;;;;320:74:122;;;;20600:38:31;;;;;;;;;;293:18:122;;;;20600:38:31;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:31;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:31;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;20847:408::-;20521:740;;20436:825;;;;:::o;15033:242::-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:31;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;5564:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;5537:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;7700:156:36:-;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:36;;;;;-1:-1:-1;4573:12:36;7813:36;7806:43;7700:156;-1:-1:-1;;;7700:156:36:o;7862:143::-;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:36;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:36;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:36;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:36;;;;;;;;;-1:-1:-1;;;;;9604:15:36;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:36;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:36;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:36;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:36;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:36;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:36;-1:-1:-1;9922:38:36;;-1:-1:-1;9857:44:36;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;21160:55:122;;9995:18:36;;;21142:74:122;21232:18;;;21225:34;;;9915:45:36;;-1:-1:-1;9980:12:36;;-1:-1:-1;9995:7:36;;;;21115:18:122;;9995::36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;44851:2:122;10056:175:36;;;44833:21:122;44890:3;44870:18;;;44863:31;44930:34;44910:18;;;44903:62;45001:34;44981:18;;;44974:62;45073:34;45052:19;;;45045:63;45145:17;45124:19;;;45117:46;45180:19;;10056:175:36;44649:556:122;10056:175:36;10251:24;;;;;-1:-1:-1;;;;;39397:55:122;;10251:24:36;;;39379:74:122;39469:18;;;39462:34;;;39512:18;;;39505:34;;;10251:8:36;;;;39352:18:122;;10251:24:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:36;;;10285:19;;;;;;-1:-1:-1;10321:9:36;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:36;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;11471:393::-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:36;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:36;;11110:304;-1:-1:-1;;;;11110:304:36:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:36;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:36;:15;;-1:-1:-1;1568:34:36;;-1:-1:-1;1452:33:36;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:36;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:36;;;;1532:174;;;-1:-1:-1;;;;;1627:15:36;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:36;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:36;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:36;-1:-1:-1;1903:38:36;;-1:-1:-1;1838:44:36;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;338:55:122;;1990:25:36;;;320:74:122;1896:45:36;;-1:-1:-1;1963:22:36;;-1:-1:-1;1990:11:36;;;;293:18:122;;1990:25:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:36;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:36;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;21160:55:122;;;;21142:74;;21247:2;21232:18;;21225:34;21130:2;21115:18;;20946:319;2077:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:36;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;21160:55:122;;;21142:74;;21232:18;;;21225:34;21115:18;2160:44:36;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;44851:2:122;2268:187:36;;;44833:21:122;44890:3;44870:18;;;44863:31;44930:34;44910:18;;;44903:62;45001:34;44981:18;;;44974:62;45073:34;45052:19;;;45045:63;45145:17;45124:19;;;45117:46;45180:19;;2268:187:36;44649:556:122;2268:187:36;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;46740:55:122;;;46722:74;;46844:66;46832:79;;;46812:18;;;46805:107;;;;46928:18;;;46921:34;46986:2;46971:18;;46964:34;46709:3;46694:19;2488:86:36;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:36;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:36;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:36;;;:88;;;;-1:-1:-1;;;;;2690:15:36;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:36;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:36;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:36;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:36;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:36;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;21160:55:122;;;;21142:74;;21247:2;21232:18;;21225:34;21130:2;21115:18;;20946:319;2894:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:36;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;21160:55:122;;;21142:74;;21232:18;;;21225:34;21115:18;2985:44:36;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:36;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;39397:55:122;;;3090:43:36;;;39379:74:122;39469:18;;;39462:34;3114:18:36;39512::122;;;39505:34;39352:18;;3090:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:36;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:36;;-1:-1:-1;3238:38:36;-1:-1:-1;3305:38:36;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;46740:55:122;;;46722:74;;46844:66;46832:79;;;46812:18;;;46805:107;;;;46928:18;;;46921:34;46986:2;46971:18;;46964:34;46709:3;46694:19;3519:86:36;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:36;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:36;-1:-1:-1;;;;;3737:15:36;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:36;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;39397:55:122;;;3834:29:36;;;39379:74:122;39469:18;;;39462:34;39512:18;;;39505:34;;;39352:18;;3834:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:36;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;39397:55:122;;;3926:29:36;;;39379:74:122;39469:18;;;39462:34;39512:18;;;39505:34;;;39352:18;;3926:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;47211:2:122;4000:74:36;;;47193:21:122;47230:18;;;47223:30;;;;47289:34;47269:18;;;47262:62;47360:34;47340:18;;;47333:62;47412:19;;4000:74:36;47009:428:122;2782:1303:36;-1:-1:-1;;;;;4116:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:36;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:36;;;;4095:162;;;;;;;47644:2:122;4095:162:36;;;47626:21:122;47683:2;47663:18;;;47656:30;47722:34;47702:18;;;47695:62;47793:17;47773:18;;;47766:45;47828:19;;4095:162:36;47442:411:122;4095:162:36;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:36;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:36;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:36;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;405:154:122:-;-1:-1:-1;;;;;484:5:122;480:54;473:5;470:65;460:93;;549:1;546;539:12;564:388;632:6;640;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;748:9;735:23;767:31;792:5;767:31;:::i;:::-;817:5;-1:-1:-1;874:2:122;859:18;;846:32;887:33;846:32;887:33;:::i;:::-;939:7;929:17;;;564:388;;;;;:::o;1203:180::-;1262:6;1315:2;1303:9;1294:7;1290:23;1286:32;1283:52;;;1331:1;1328;1321:12;1283:52;-1:-1:-1;1354:23:122;;1203:180;-1:-1:-1;1203:180:122:o;1388:250::-;1473:1;1483:113;1497:6;1494:1;1491:13;1483:113;;;1573:11;;;1567:18;1554:11;;;1547:39;1519:2;1512:10;1483:113;;;-1:-1:-1;;1630:1:122;1612:16;;1605:27;1388:250::o;1643:329::-;1684:3;1722:5;1716:12;1749:6;1744:3;1737:19;1765:76;1834:6;1827:4;1822:3;1818:14;1811:4;1804:5;1800:16;1765:76;:::i;:::-;1886:2;1874:15;-1:-1:-1;;1870:88:122;1861:98;;;;1961:4;1857:109;;1643:329;-1:-1:-1;;1643:329:122:o;1977:435::-;-1:-1:-1;;;;;2211:6:122;2207:55;2196:9;2189:74;2299:6;2294:2;2283:9;2279:18;2272:34;2342:2;2337;2326:9;2322:18;2315:30;2170:4;2362:44;2402:2;2391:9;2387:18;2379:6;2362:44;:::i;2417:484::-;2470:3;2508:5;2502:12;2535:6;2530:3;2523:19;2561:4;2590:2;2585:3;2581:12;2574:19;;2627:2;2620:5;2616:14;2648:1;2658:218;2672:6;2669:1;2666:13;2658:218;;;2737:13;;-1:-1:-1;;;;;2733:62:122;2721:75;;2816:12;;;;2851:15;;;;2694:1;2687:9;2658:218;;;-1:-1:-1;2892:3:122;;2417:484;-1:-1:-1;;;;;2417:484:122:o;2906:261::-;3085:2;3074:9;3067:21;3048:4;3105:56;3157:2;3146:9;3142:18;3134:6;3105:56;:::i;3422:184::-;3474:77;3471:1;3464:88;3571:4;3568:1;3561:15;3595:4;3592:1;3585:15;3611:255;3683:2;3677:9;3725:6;3713:19;;3762:18;3747:34;;3783:22;;;3744:62;3741:88;;;3809:18;;:::i;:::-;3845:2;3838:22;3611:255;:::o;3871:334::-;3942:2;3936:9;3998:2;3988:13;;-1:-1:-1;;3984:86:122;3972:99;;4101:18;4086:34;;4122:22;;;4083:62;4080:88;;;4148:18;;:::i;:::-;4184:2;4177:22;3871:334;;-1:-1:-1;3871:334:122:o;4210:183::-;4270:4;4303:18;4295:6;4292:30;4289:56;;;4325:18;;:::i;:::-;-1:-1:-1;4370:1:122;4366:14;4382:4;4362:25;;4210:183::o;4398:662::-;4452:5;4505:3;4498:4;4490:6;4486:17;4482:27;4472:55;;4523:1;4520;4513:12;4472:55;4559:6;4546:20;4585:4;4609:60;4625:43;4665:2;4625:43;:::i;:::-;4609:60;:::i;:::-;4703:15;;;4789:1;4785:10;;;;4773:23;;4769:32;;;4734:12;;;;4813:15;;;4810:35;;;4841:1;4838;4831:12;4810:35;4877:2;4869:6;4865:15;4889:142;4905:6;4900:3;4897:15;4889:142;;;4971:17;;4959:30;;5009:12;;;;4922;;4889:142;;;-1:-1:-1;5049:5:122;4398:662;-1:-1:-1;;;;;;4398:662:122:o;5065:348::-;5149:6;5202:2;5190:9;5181:7;5177:23;5173:32;5170:52;;;5218:1;5215;5208:12;5170:52;5258:9;5245:23;5291:18;5283:6;5280:30;5277:50;;;5323:1;5320;5313:12;5277:50;5346:61;5399:7;5390:6;5379:9;5375:22;5346:61;:::i;:::-;5336:71;5065:348;-1:-1:-1;;;;5065:348:122:o;5862:484::-;5964:6;5972;5980;6033:2;6021:9;6012:7;6008:23;6004:32;6001:52;;;6049:1;6046;6039:12;6001:52;6085:9;6072:23;6062:33;;6146:2;6135:9;6131:18;6118:32;6173:18;6165:6;6162:30;6159:50;;;6205:1;6202;6195:12;6159:50;6228:61;6281:7;6272:6;6261:9;6257:22;6228:61;:::i;:::-;6218:71;;;6336:2;6325:9;6321:18;6308:32;6298:42;;5862:484;;;;;:::o;6639:1697::-;6843:4;6872:2;6912;6901:9;6897:18;6942:2;6931:9;6924:21;6965:6;7000;6994:13;7031:6;7023;7016:22;7057:2;7047:12;;7090:2;7079:9;7075:18;7068:25;;7152:2;7142:6;7139:1;7135:14;7124:9;7120:30;7116:39;7190:2;7182:6;7178:15;7211:1;7232;7242:1065;7258:6;7253:3;7250:15;7242:1065;;;7327:22;;;7351:66;7323:95;7311:108;;7442:13;;7529:9;;-1:-1:-1;;;;;7525:58:122;7510:74;;7623:11;;7617:18;7655:15;;;7648:27;;;7736:19;;7482:15;;;7768:24;;;7858:21;;;;7903:1;;7826:2;7814:15;;;7917:282;7933:8;7928:3;7925:17;7917:282;;;8014:15;;8031:66;8010:88;7996:103;;8168:17;;;;7961:1;7952:11;;;;;8125:14;;;;7917:282;;;-1:-1:-1;8285:12:122;;;;8222:5;-1:-1:-1;;;8250:15:122;;;;7284:1;7275:11;7242:1065;;;-1:-1:-1;8324:6:122;;6639:1697;-1:-1:-1;;;;;;;;;6639:1697:122:o;8572:247::-;8631:6;8684:2;8672:9;8663:7;8659:23;8655:32;8652:52;;;8700:1;8697;8690:12;8652:52;8739:9;8726:23;8758:31;8783:5;8758:31;:::i;8824:861::-;8986:4;9015:2;9055;9044:9;9040:18;9085:2;9074:9;9067:21;9108:6;9143;9137:13;9174:6;9166;9159:22;9212:2;9201:9;9197:18;9190:25;;9274:2;9264:6;9261:1;9257:14;9246:9;9242:30;9238:39;9224:53;;9312:2;9304:6;9300:15;9333:1;9343:313;9357:6;9354:1;9351:13;9343:313;;;9446:66;9434:9;9426:6;9422:22;9418:95;9413:3;9406:108;9537:39;9569:6;9560;9554:13;9537:39;:::i;:::-;9527:49;-1:-1:-1;9634:12:122;;;;9599:15;;;;9379:1;9372:9;9343:313;;;-1:-1:-1;9673:6:122;;8824:861;-1:-1:-1;;;;;;;8824:861:122:o;9956:416::-;10049:6;10057;10110:2;10098:9;10089:7;10085:23;10081:32;10078:52;;;10126:1;10123;10116:12;10078:52;10166:9;10153:23;10199:18;10191:6;10188:30;10185:50;;;10231:1;10228;10221:12;10185:50;10254:61;10307:7;10298:6;10287:9;10283:22;10254:61;:::i;:::-;10244:71;10362:2;10347:18;;;;10334:32;;-1:-1:-1;;;;9956:416:122:o;10377:435::-;10430:3;10468:5;10462:12;10495:6;10490:3;10483:19;10521:4;10550:2;10545:3;10541:12;10534:19;;10587:2;10580:5;10576:14;10608:1;10618:169;10632:6;10629:1;10626:13;10618:169;;;10693:13;;10681:26;;10727:12;;;;10762:15;;;;10654:1;10647:9;10618:169;;10817:261;10996:2;10985:9;10978:21;10959:4;11016:56;11068:2;11057:9;11053:18;11045:6;11016:56;:::i;11976:248::-;12044:6;12052;12105:2;12093:9;12084:7;12080:23;12076:32;12073:52;;;12121:1;12118;12111:12;12073:52;-1:-1:-1;;12144:23:122;;;12214:2;12199:18;;;12186:32;;-1:-1:-1;11976:248:122:o;12730:271::-;12820:6;12873:2;12861:9;12852:7;12848:23;12844:32;12841:52;;;12889:1;12886;12879:12;12841:52;12921:9;12915:16;12940:31;12965:5;12940:31;:::i;13006:437::-;13085:1;13081:12;;;;13128;;;13149:61;;13203:4;13195:6;13191:17;13181:27;;13149:61;13256:2;13248:6;13245:14;13225:18;13222:38;13219:218;;13293:77;13290:1;13283:88;13394:4;13391:1;13384:15;13422:4;13419:1;13412:15;13219:218;;13006:437;;;:::o;13852:184::-;13904:77;13901:1;13894:88;14001:4;13998:1;13991:15;14025:4;14022:1;14015:15;14041:184;14111:6;14164:2;14152:9;14143:7;14139:23;14135:32;14132:52;;;14180:1;14177;14170:12;14132:52;-1:-1:-1;14203:16:122;;14041:184;-1:-1:-1;14041:184:122:o;14483:164::-;14559:13;;14608;;14601:21;14591:32;;14581:60;;14637:1;14634;14627:12;14652:202;14719:6;14772:2;14760:9;14751:7;14747:23;14743:32;14740:52;;;14788:1;14785;14778:12;14740:52;14811:37;14838:9;14811:37;:::i;14958:1256::-;15174:13;;-1:-1:-1;;;;;86:54:122;74:67;;15136:3;15121:19;;15246:4;15238:6;15234:17;15228:24;15261:60;15315:4;15304:9;15300:20;15286:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;15261:60;;15370:4;15362:6;15358:17;15352:24;15385:62;15441:4;15430:9;15426:20;15410:14;-1:-1:-1;;;;;86:54:122;74:67;;14:133;15385:62;;15503:4;15495:6;15491:17;15485:24;15478:4;15467:9;15463:20;15456:54;15566:4;15558:6;15554:17;15548:24;15541:4;15530:9;15526:20;15519:54;15622:4;15614:6;15610:17;15604:24;15637:55;15686:4;15675:9;15671:20;15655:14;14935:10;14924:22;14912:35;;14859:94;15637:55;;15748:4;15740:6;15736:17;15730:24;15723:4;15712:9;15708:20;15701:54;15811:4;15803:6;15799:17;15793:24;15786:4;15775:9;15771:20;15764:54;15837:6;15897:2;15889:6;15885:15;15879:22;15874:2;15863:9;15859:18;15852:50;;15921:6;15976:2;15968:6;15964:15;15958:22;15989:51;16036:2;16025:9;16021:18;16005:14;6421:13;6414:21;6402:34;;6351:91;15989:51;-1:-1:-1;;16059:6:122;16107:15;;;16101:22;16081:18;;;16074:50;16143:6;16191:15;;;16185:22;16165:18;;;;16158:50;;;;14958:1256;:::o;16219:370::-;-1:-1:-1;;;;;16324:5:122;16318:12;16314:61;16309:3;16302:74;16425:4;16418:5;16414:16;16408:23;16401:4;16396:3;16392:14;16385:47;16284:3;16478:4;16471:5;16467:16;16461:23;16516:4;16509;16504:3;16500:14;16493:28;16537:46;16577:4;16572:3;16568:14;16554:12;16537:46;:::i;16594:791::-;-1:-1:-1;;;;;16961:6:122;16957:55;16946:9;16939:74;17049:3;17044:2;17033:9;17029:18;17022:31;16920:4;17076:69;17140:3;17129:9;17125:19;17117:6;17076:69;:::i;:::-;17193:9;17185:6;17181:22;17176:2;17165:9;17161:18;17154:50;17227:32;17252:6;17244;17227:32;:::i;:::-;17213:46;;17307:9;17299:6;17295:22;17290:2;17279:9;17275:18;17268:50;17335:44;17372:6;17364;17335:44;:::i;17390:146::-;17477:13;;17499:31;17477:13;17499:31;:::i;17541:167::-;17619:13;;17672:10;17661:22;;17651:33;;17641:61;;17698:1;17695;17688:12;17713:568;17766:5;17819:3;17812:4;17804:6;17800:17;17796:27;17786:55;;17837:1;17834;17827:12;17786:55;17866:6;17860:13;17892:18;17888:2;17885:26;17882:52;;;17914:18;;:::i;:::-;17958:114;18066:4;-1:-1:-1;;17990:4:122;17986:2;17982:13;17978:86;17974:97;17958:114;:::i;:::-;18097:2;18088:7;18081:19;18143:3;18136:4;18131:2;18123:6;18119:15;18115:26;18112:35;18109:55;;;18160:1;18157;18150:12;18109:55;18173:77;18247:2;18240:4;18231:7;18227:18;18220:4;18212:6;18208:17;18173:77;:::i;18286:1452::-;18396:6;18404;18448:9;18439:7;18435:23;18478:3;18474:2;18470:12;18467:32;;;18495:1;18492;18485:12;18467:32;18518:6;18544:2;18540;18536:11;18533:31;;;18560:1;18557;18550:12;18533:31;18586:22;;:::i;:::-;18573:35;;18631:48;18669:9;18631:48;:::i;:::-;18624:5;18617:63;18712:57;18765:2;18754:9;18750:18;18712:57;:::i;:::-;18707:2;18700:5;18696:14;18689:81;18802:57;18855:2;18844:9;18840:18;18802:57;:::i;:::-;18797:2;18790:5;18786:14;18779:81;18913:2;18902:9;18898:18;18892:25;18887:2;18880:5;18876:14;18869:49;18972:3;18961:9;18957:19;18951:26;18945:3;18938:5;18934:15;18927:51;19011:49;19055:3;19044:9;19040:19;19011:49;:::i;:::-;19005:3;18998:5;18994:15;18987:74;19115:3;19104:9;19100:19;19094:26;19088:3;19081:5;19077:15;19070:51;19175:3;19164:9;19160:19;19154:26;19148:3;19141:5;19137:15;19130:51;19200:3;19256:2;19245:9;19241:18;19235:25;19230:2;19223:5;19219:14;19212:49;;19280:3;19315:46;19357:2;19346:9;19342:18;19315:46;:::i;:::-;19299:14;;;19292:70;19381:3;19422:18;;;19416:25;19400:14;;;19393:49;19461:3;19502:18;;;19496:25;19480:14;;;19473:49;19575:18;;19569:25;19303:5;;-1:-1:-1;19617:18:122;19606:30;;19603:50;;;19649:1;19646;19639:12;19603:50;19672:60;19724:7;19715:6;19704:9;19700:22;19672:60;:::i;:::-;19662:70;;;18286:1452;;;;;:::o;19743:288::-;19918:6;19907:9;19900:25;19961:2;19956;19945:9;19941:18;19934:30;19881:4;19981:44;20021:2;20010:9;20006:18;19998:6;19981:44;:::i;20036:336::-;20105:6;20158:2;20146:9;20137:7;20133:23;20129:32;20126:52;;;20174:1;20171;20164:12;20126:52;20206:9;20200:16;20256:66;20249:5;20245:78;20238:5;20235:89;20225:117;;20338:1;20335;20328:12;22454:430;22651:66;22643:6;22639:79;22634:3;22627:92;22609:3;22748:6;22742:13;22764:74;22831:6;22827:1;22822:3;22818:11;22811:4;22803:6;22799:17;22764:74;:::i;:::-;22858:16;;;;22876:1;22854:24;;22454:430;-1:-1:-1;;;22454:430:122:o;22889:287::-;23018:3;23056:6;23050:13;23072:66;23131:6;23126:3;23119:4;23111:6;23107:17;23072:66;:::i;:::-;23154:16;;;;;22889:287;-1:-1:-1;;22889:287:122:o;23181:184::-;23233:77;23230:1;23223:88;23330:4;23327:1;23320:15;23354:4;23351:1;23344:15;23370:125;23435:9;;;23456:10;;;23453:36;;;23469:18;;:::i;24626:397::-;24856:2;24845:9;24838:21;24819:4;24876:49;24921:2;24910:9;24906:18;24539:2;24527:15;;24574:12;24567:4;24558:14;;24551:36;24612:2;24603:12;;24462:159;24876:49;24868:57;;-1:-1:-1;;;;;24965:6:122;24961:55;24956:2;24945:9;24941:18;24934:83;24626:397;;;;:::o;25192:::-;25422:2;25411:9;25404:21;25385:4;25442:49;25487:2;25476:9;25472:18;25105:2;25093:15;;25140:12;25133:4;25124:14;;25117:36;25178:2;25169:12;;25028:159;26687:348;26917:2;26906:9;26899:21;26880:4;26937:49;26982:2;26971:9;26967:18;24539:2;24527:15;;24574:12;24567:4;24558:14;;24551:36;24612:2;24603:12;;24462:159;26937:49;26929:57;;27022:6;27017:2;27006:9;27002:18;26995:34;26687:348;;;;:::o;27040:::-;27270:2;27259:9;27252:21;27233:4;27290:49;27335:2;27324:9;27320:18;25105:2;25093:15;;25140:12;25133:4;25124:14;;25117:36;25178:2;25169:12;;25028:159;27796:439;28046:2;28035:9;28028:21;28009:4;28072:49;28117:2;28106:9;28102:18;24539:2;24527:15;;24574:12;24567:4;24558:14;;24551:36;24612:2;24603:12;;24462:159;28072:49;28169:9;28161:6;28157:22;28152:2;28141:9;28137:18;28130:50;28197:32;28222:6;28214;28197:32;:::i;28240:439::-;28490:2;28479:9;28472:21;28453:4;28516:49;28561:2;28550:9;28546:18;25105:2;25093:15;;25140:12;25133:4;25124:14;;25117:36;25178:2;25169:12;;25028:159;28684:305;28895:2;28884:9;28877:21;28858:4;28915:68;28979:2;28968:9;28964:18;28956:6;28915:68;:::i;28994:386::-;29227:2;29216:9;29209:21;29190:4;29247:68;29311:2;29300:9;29296:18;29288:6;29247:68;:::i;:::-;29239:76;;29365:6;29358:14;29351:22;29346:2;29335:9;29331:18;29324:50;28994:386;;;;;:::o;29385:980::-;29603:13;;-1:-1:-1;;;;;86:54:122;74:67;;29565:3;29550:19;;29675:4;29667:6;29663:17;29657:24;29690:60;29744:4;29733:9;29729:20;29715:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;29690:60;;29799:4;29791:6;29787:17;29781:24;29814:62;29870:4;29859:9;29855:20;29839:14;-1:-1:-1;;;;;86:54:122;74:67;;14:133;29814:62;;29932:4;29924:6;29920:17;29914:24;29907:4;29896:9;29892:20;29885:54;29995:4;29987:6;29983:17;29977:24;29970:4;29959:9;29955:20;29948:54;30058:4;30050:6;30046:17;30040:24;30033:4;30022:9;30018:20;30011:54;30121:4;30113:6;30109:17;30103:24;30096:4;30085:9;30081:20;30074:54;30184:4;30176:6;30172:17;30166:24;30159:4;30148:9;30144:20;30137:54;30210:6;30270:2;30262:6;30258:15;30252:22;30247:2;30236:9;30232:18;30225:50;;30294:6;30354:2;30346:6;30342:15;30336:22;30331:2;30320:9;30316:18;30309:50;;29385:980;;;;:::o;30370:195::-;30409:3;30440:66;30433:5;30430:77;30427:103;;30510:18;;:::i;:::-;-1:-1:-1;30557:1:122;30546:13;;30370:195::o;30570:168::-;30643:9;;;30674;;30691:15;;;30685:22;;30671:37;30661:71;;30712:18;;:::i;31045:443::-;31253:66;31244:6;31240:2;31236:15;31232:88;31227:3;31220:101;31202:3;31350:6;31344:13;31366:75;31434:6;31429:2;31424:3;31420:12;31413:4;31405:6;31401:17;31366:75;:::i;:::-;31461:16;;;;31479:2;31457:25;;31045:443;-1:-1:-1;;;31045:443:122:o;31493:1493::-;31556:3;31587;31628:2;31662;31655:5;31651:14;31688:5;31711:1;31732;31742:1218;31758:4;31753:3;31750:13;31742:1218;;;31821:16;;;31809:29;;31861:13;;31931:9;;31953:20;;;31996:4;32125:11;;;;32022:13;;;;31931:9;32080:1;32076:14;;;32066:25;;32062:34;;32160:1;32174:679;32190:6;32185:3;32182:15;32174:679;;;32269:17;;;-1:-1:-1;;32265:90:122;32251:105;;32383:15;;32434:9;;-1:-1:-1;;;;;32430:58:122;32415:74;;32536:11;;;32530:18;32513:15;;;32506:43;32576:4;32623:11;;;32617:18;32659:15;;;32652:27;;;32706:47;32737:15;;;32617:18;32706:47;:::i;:::-;32782:17;;;;32825:14;;;;32696:57;-1:-1:-1;;32216:1:122;32207:11;32174:679;;;-1:-1:-1;32938:12:122;;;;32874:6;-1:-1:-1;32903:15:122;;;;;-1:-1:-1;;;31782:1:122;31773:11;31742:1218;;;-1:-1:-1;32976:4:122;;31493:1493;-1:-1:-1;;;;;;;31493:1493:122:o;32991:3025::-;33545:3;33598:21;;;33668:13;;33571:18;;;33690:22;;;33516:4;;33545:3;33731;;33750:18;;;;33787:4;33814:15;;;33516:4;33857:218;33871:6;33868:1;33865:13;33857:218;;;33936:13;;-1:-1:-1;;;;;33932:62:122;33920:75;;34015:12;;;;34050:15;;;;33893:1;33886:9;33857:218;;;33861:3;;34120:9;34115:3;34111:19;34106:2;34095:9;34091:18;34084:47;34154:41;34191:3;34183:6;34154:41;:::i;:::-;34140:55;;34214:2;34204:12;;34264:9;34256:6;34252:22;34247:2;34236:9;34232:18;34225:50;34297:6;34334;34328:13;34365:8;34357:6;34350:24;34404:2;34396:6;34392:15;34383:24;;34465:2;34453:8;34450:1;34446:16;34438:6;34434:29;34430:38;34505:2;34497:6;34493:15;34528:1;34538:1340;34554:8;34549:3;34546:17;34538:1340;;;-1:-1:-1;;34639:6:122;34631;34627:19;34623:92;34616:5;34609:107;34745:8;34739:15;34777:6;34817:2;34811:9;34803:6;34796:25;34872:2;34868;34864:11;34858:18;34853:2;34845:6;34841:15;34834:43;34924:2;34920;34916:11;34910:18;34941:55;34992:2;34984:6;34980:15;34966:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;34941:55;-1:-1:-1;35019:4:122;35066:11;;;35060:18;35043:15;;;35036:43;35122:11;;;35116:18;35099:15;;;35092:43;35176:11;;;35170:18;14935:10;14924:22;35235:15;;;14912:35;35274:4;35321:11;;;35315:18;35298:15;;;35291:43;35357:4;35404:11;;;35398:18;35381:15;;;35374:43;35441:6;35491:12;;;35485:19;35467:16;;;35460:45;35529:6;35579:12;;;35573:19;35555:16;;;35548:45;35617:6;35664:12;;;35658:19;35697:16;;;35690:28;;;35741:49;35774:15;;;35658:19;35741:49;:::i;:::-;35854:14;;;;35731:59;-1:-1:-1;;;35815:17:122;;;;34582:1;34573:11;34538:1340;;;34542:3;;35928:9;35920:6;35916:22;35909:4;35898:9;35894:20;35887:52;35956:54;36003:6;35995;35956:54;:::i;:::-;35948:62;32991:3025;-1:-1:-1;;;;;;;;;;;;;;32991:3025:122:o;36021:184::-;36073:77;36070:1;36063:88;36170:4;36167:1;36160:15;36194:4;36191:1;36184:15;36210:294;36291:1;36284:5;36281:12;36271:200;;36327:77;36324:1;36317:88;36428:4;36425:1;36418:15;36456:4;36453:1;36446:15;36271:200;36480:18;;36210:294::o;36509:1028::-;36908:4;36937:3;-1:-1:-1;;;;;37040:2:122;37032:6;37028:15;37017:9;37010:34;37080:6;37075:2;37064:9;37060:18;37053:34;37123:2;37118;37107:9;37103:18;37096:30;37143:44;37183:2;37172:9;37168:18;37160:6;37143:44;:::i;:::-;37135:52;;37196:53;37245:2;37234:9;37230:18;37222:6;37196:53;:::i;:::-;37280:3;37265:19;;37258:35;;;;-1:-1:-1;37324:3:122;37309:19;;37302:35;;;;37368:3;37353:19;;37346:35;;;;37418:15;;;37412:3;37397:19;;37390:44;37471:15;;;37465:3;37450:19;;37443:44;37518:3;37503:19;37496:35;;;;36509:1028;;-1:-1:-1;;;;36509:1028:122:o;37542:492::-;37717:3;37755:6;37749:13;37771:66;37830:6;37825:3;37818:4;37810:6;37806:17;37771:66;:::i;:::-;37900:13;;37859:16;;;;37922:70;37900:13;37859:16;37969:4;37957:17;;37922:70;:::i;:::-;38008:20;;37542:492;-1:-1:-1;;;;37542:492:122:o;38039:1133::-;38472:4;38501:3;-1:-1:-1;;;;;38604:2:122;38596:6;38592:15;38581:9;38574:34;38644:6;38639:2;38628:9;38624:18;38617:34;38687:2;38682;38671:9;38667:18;38660:30;38713:44;38753:2;38742:9;38738:18;38730:6;38713:44;:::i;:::-;38699:58;;38766:53;38815:2;38804:9;38800:18;38792:6;38766:53;:::i;:::-;38856:6;38850:3;38839:9;38835:19;38828:35;38900:6;38894:3;38883:9;38879:19;38872:35;38944:6;38938:3;38927:9;38923:19;38916:35;39000:2;38992:6;38988:15;38982:3;38971:9;38967:19;38960:44;39053:2;39045:6;39041:15;39035:3;39024:9;39020:19;39013:44;;39106:9;39098:6;39094:22;39088:3;39077:9;39073:19;39066:51;39134:32;39159:6;39151;39134:32;:::i;:::-;39126:40;38039:1133;-1:-1:-1;;;;;;;;;;;;;38039:1133:122:o;39803:395::-;39889:6;39897;39905;39958:2;39946:9;39937:7;39933:23;39929:32;39926:52;;;39974:1;39971;39964:12;39926:52;40006:9;40000:16;40056:4;40049:5;40045:16;40038:5;40035:27;40025:55;;40076:1;40073;40066:12;40025:55;40144:2;40129:18;;40123:25;40188:2;40173:18;;;40167:25;40099:5;;40123:25;;-1:-1:-1;40167:25:122;39803:395;-1:-1:-1;;;39803:395:122:o;41813:339::-;-1:-1:-1;;;;;41994:6:122;41990:55;41979:9;41972:74;42082:2;42077;42066:9;42062:18;42055:30;41953:4;42102:44;42142:2;42131:9;42127:18;42119:6;42102:44;:::i;42157:1051::-;42574:4;42603:3;42633:2;42622:9;42615:21;42659:56;42711:2;42700:9;42696:18;42688:6;42659:56;:::i;:::-;42746:2;42731:18;;;42724:34;;;;-1:-1:-1;;;;;42855:15:122;;;42850:2;42835:18;;42828:43;42907:22;;;42902:2;42887:18;;42880:50;-1:-1:-1;42939:17:122;;43025:15;;;43019:3;43004:19;;42997:44;-1:-1:-1;;43078:15:122;;;43072:3;43057:19;;43050:44;43143:4;43131:17;;;;43125:3;43110:19;;43103:46;43186:15;;;43180:3;43165:19;;;43158:44;;;;42973:15;;42157:1051;-1:-1:-1;42157:1051:122:o;43213:408::-;-1:-1:-1;;;;;43420:6:122;43416:55;43405:9;43398:74;43508:2;43503;43492:9;43488:18;43481:30;43379:4;43528:44;43568:2;43557:9;43553:18;43545:6;43528:44;:::i;:::-;43520:52;;43608:6;43603:2;43592:9;43588:18;43581:34;43213:408;;;;;;:::o;43901:128::-;43968:9;;;43989:11;;;43986:37;;;44003:18;;:::i;44034:610::-;44280:13;;44223:3;;44254;;44333:4;44360:15;;;44223:3;44403:175;44417:6;44414:1;44411:13;44403:175;;;44480:13;;44466:28;;44516:14;;;;44553:15;;;;44439:1;44432:9;44403:175;;;-1:-1:-1;;44587:21:122;;;-1:-1:-1;44624:14:122;;;;;-1:-1:-1;;;44034:610:122:o;45210:659::-;45275:5;45328:3;45321:4;45313:6;45309:17;45305:27;45295:55;;45346:1;45343;45336:12;45295:55;45375:6;45369:13;45401:4;45425:60;45441:43;45481:2;45441:43;:::i;45425:60::-;45519:15;;;45605:1;45601:10;;;;45589:23;;45585:32;;;45550:12;;;;45629:15;;;45626:35;;;45657:1;45654;45647:12;45626:35;45693:2;45685:6;45681:15;45705:135;45721:6;45716:3;45713:15;45705:135;;;45787:10;;45775:23;;45818:12;;;;45738;;45705:135;;45874:614;46003:6;46011;46064:2;46052:9;46043:7;46039:23;46035:32;46032:52;;;46080:1;46077;46070:12;46032:52;46113:9;46107:16;46142:18;46183:2;46175:6;46172:14;46169:34;;;46199:1;46196;46189:12;46169:34;46222:72;46286:7;46277:6;46266:9;46262:22;46222:72;:::i;:::-;46212:82;;46340:2;46329:9;46325:18;46319:25;46303:41;;46369:2;46359:8;46356:16;46353:36;;;46385:1;46382;46375:12;46353:36;;46408:74;46474:7;46463:8;46452:9;46448:24;46408:74;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_BaseSwapGuard_supportsInterface()":"3c46c586","test_ReceiverLock_verify_FuzzRevertsWhenReceiverNotSelf(address)":"85094f75","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","test_setSwapGuard_FuzzSetAndEmit(address,address)":"0df6971f","test_setSwapGuard_e2e()":"864f7845","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BaseSwapGuard_supportsInterface\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"test_ReceiverLock_verify_FuzzRevertsWhenReceiverNotSelf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"test_setSwapGuard_FuzzSetAndEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setSwapGuard_e2e\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_BaseSwapGuard_supportsInterface()\":{\"details\":\"`BaseSwapGuard` should support the appropriate interfaces\"},\"test_ReceiverLock_verify_FuzzRevertsWhenReceiverNotSelf(address)\":{\"details\":\"`ReceiverLock` should revert if the receiver is not the safe\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"},\"test_setSwapGuard_FuzzSetAndEmit(address,address)\":{\"details\":\"Can set and remove a swap guard\"},\"test_setSwapGuard_e2e()\":{\"details\":\"An end-to-end test of the ComposableCoW contract that tests the following: 1. Validates a single order with no swap guard 2. `owner` can set a swap guard 3. Swap guard does **NOT** allow an invalid order to be validated 4. Swap guard allows the single order to be validated 5. `owner` can remove the swap guard\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.guards.t.sol\":\"ComposableCoWGuardsTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.guards.t.sol\":{\"keccak256\":\"0x9f08734d90e52966d9086267f3aa39e856163a438abe9bd3373f34c342d1e9f0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0d4f15afffa2075d860ec4ac003a488dfc6a7848ad4875fd770fc717a39ec09f\",\"dweb:/ipfs/QmRQVFXDXqjPCHQpf8LdG7tqW2W995YsXbhDK2CWpH27JY\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BaseSwapGuard_supportsInterface"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"test_ReceiverLock_verify_FuzzRevertsWhenReceiverNotSelf"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"swapGuard","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"test_setSwapGuard_FuzzSetAndEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setSwapGuard_e2e"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_BaseSwapGuard_supportsInterface()":{"details":"`BaseSwapGuard` should support the appropriate interfaces"},"test_ReceiverLock_verify_FuzzRevertsWhenReceiverNotSelf(address)":{"details":"`ReceiverLock` should revert if the receiver is not the safe"},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"},"test_setSwapGuard_FuzzSetAndEmit(address,address)":{"details":"Can set and remove a swap guard"},"test_setSwapGuard_e2e()":{"details":"An end-to-end test of the ComposableCoW contract that tests the following: 1. Validates a single order with no swap guard 2. `owner` can set a swap guard 3. Swap guard does **NOT** allow an invalid order to be validated 4. Swap guard allows the single order to be validated 5. `owner` can remove the swap guard"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.guards.t.sol":"ComposableCoWGuardsTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.guards.t.sol":{"keccak256":"0x9f08734d90e52966d9086267f3aa39e856163a438abe9bd3373f34c342d1e9f0","urls":["bzz-raw://0d4f15afffa2075d860ec4ac003a488dfc6a7848ad4875fd770fc717a39ec09f","dweb:/ipfs/QmRQVFXDXqjPCHQpf8LdG7tqW2W995YsXbhDK2CWpH27JY"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":110} \ No newline at end of file diff --git a/out/ComposableCoW.stoploss.t.sol/ComposableCoWStopLossTest.json b/out/ComposableCoW.stoploss.t.sol/ComposableCoWStopLossTest.json new file mode 100644 index 0000000..0bb2634 --- /dev/null +++ b/out/ComposableCoW.stoploss.t.sol/ComposableCoWStopLossTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_OracleNormalisesPrice_concrete","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_OracleNormalisesPrice_fuzz","inputs":[{"name":"sellTokenERC20Decimals","type":"uint8","internalType":"uint8"},{"name":"buyTokenERC20Decimals","type":"uint8","internalType":"uint8"},{"name":"sellTokenOracleDecimals","type":"uint8","internalType":"uint8"},{"name":"buyTokenOracleDecimals","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_OracleRevertOnExpiredOrder_fuzz","inputs":[{"name":"currentTime","type":"uint32","internalType":"uint32"},{"name":"validTo","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_OracleRevertOnInvalidPrice_fuzz","inputs":[{"name":"invalidPrice","type":"int256","internalType":"int256"},{"name":"validPrice","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_OracleRevertOnStalePrice_fuzz","inputs":[{"name":"currentTime","type":"uint256","internalType":"uint256"},{"name":"maxTimeSinceLastOracleUpdate","type":"uint256","internalType":"uint256"},{"name":"updatedAt","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RevertStrikePriceNotMet_fuzz","inputs":[{"name":"sellTokenOraclePrice","type":"int256","internalType":"int256"},{"name":"buyTokenOraclePrice","type":"int256","internalType":"int256"},{"name":"strike","type":"int256","internalType":"int256"},{"name":"currentTime","type":"uint256","internalType":"uint256"},{"name":"staleTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_strikePriceMet_fuzz","inputs":[{"name":"sellTokenOraclePrice","type":"int256","internalType":"int256"},{"name":"buyTokenOraclePrice","type":"int256","internalType":"int256"},{"name":"strike","type":"int256","internalType":"int256"},{"name":"validTo","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_strikePriceNotMet_concrete","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60c060405260008054600160ff1991821681179092556004805490911682179055608052600260a0523480156200003557600080fd5b50604051620000449062000390565b604051809103906000f08015801562000061573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039290921691909117905560405162000090906200039e565b604051809103906000f080158015620000ad573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000dc90620003ac565b604051809103906000f080158015620000f9573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012890620003ba565b604051809103906000f08015801562000145573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200017490620003c8565b604051809103906000f08015801562000191573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001c090620003d6565b604051809103906000f080158015620001dd573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020c90620003e4565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f08015801562000261573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200029090620003e4565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002e5573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200031490620003e4565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000369573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003f2565b613dd180620145c183390190565b610979806201839283390190565b6111688062018d0b83390190565b6124eb8062019e7383390190565b6102ec806201c35e83390190565b610470806201c64a83390190565b610e13806201caba83390190565b60805160a0516201411b620004a660003960008181610e990152818161105a015281816114de0152818161174401528181611b7e0152818161234c015281816127d3015281816131ad0152818161354b015281816137210152613b9e015260008181610e5e0152818161102a015281816114a40152818161171401528181611b4301528181612311015281816127980152818161317201528181613510015281816136f10152613b6301526201411b6000f3fe60806040523480156200001157600080fd5b5060043610620003255760003560e01c8063916a17c611620001b1578063c7738c7111620000f5578063dd1d259911620000a3578063e27d5153116200007a578063e27d5153146200066e578063fa7626d41462000685578063fbfa77cf146200069357600080fd5b8063dd1d25991462000639578063dfe274a91462000650578063e20c9f71146200066457600080fd5b8063cf06c7b711620000d8578063cf06c7b714620005f7578063d21220a7146200060e578063d7875278146200062257600080fd5b8063c7738c7114620005d9578063c80916d414620005e357600080fd5b8063b62654fb116200015f578063ba414fa61162000136578063ba414fa614620005a4578063bc8f70a914620005ae578063c45a015514620005c557600080fd5b8063b62654fb1462000560578063b716db661462000574578063b8616195146200057e57600080fd5b80639fbcc9ad11620001945780639fbcc9ad146200052e578063ad9b04751462000542578063b5508aa9146200055657600080fd5b8063916a17c6146200051a5780639989a732146200052457600080fd5b80633f7286f4116200027957806366d9a9a011620002275780638406c07911620001fe5780638406c07914620004d657806385226c8114620004ea5780638807cc5c146200050357600080fd5b806366d9a9a014620004925780636bd4647514620004ab5780637d499aa414620004c257600080fd5b806351160630116200025c57806351160630146200043f57806358161a42146200045357806360cf299c146200047b57600080fd5b80633f7286f4146200041e5780634e050488146200042857600080fd5b806325be124e11620002d75780632e08d60211620002ba5780632e08d60214620003e4578063329696ac146200040a5780633e5e3c23146200041457600080fd5b806325be124e14620003bc578063294402cc14620003d057600080fd5b80630dfe1681116200030c5780630dfe16811462000367578063151bcd2c146200037b5780631ed7831c14620003a357600080fd5b80630a9254e4146200032a5780630c8548f51462000336575b600080fd5b62000334620006a7565b005b6033546200034a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6021546200034a906001600160a01b031681565b620003926200038c36600462007c20565b62000717565b6040516200035e9392919062007c8e565b620003ad620007d4565b6040516200035e919062007cfe565b6023546200034a906001600160a01b031681565b601f546200034a906001600160a01b031681565b620003fb620003f536600462007e3d565b62000838565b6040519081526020016200035e565b6200033462000914565b620003ad62000a22565b620003ad62000a84565b620003346200043936600462007e91565b62000ae6565b6025546200034a906001600160a01b031681565b6200046a6200046436600462007ed5565b620011ac565b60405190151581526020016200035e565b620003346200048c36600462007f39565b620011fd565b6200049c62001813565b6040516200035e919062007f93565b62000334620004bc36600462008080565b6200191b565b6032546200034a906001600160a01b031681565b602a546200034a906001600160a01b031681565b620004f462001e47565b6040516200035e9190620080ad565b620003346200051436600462008131565b62001f21565b6200049c62002604565b6200033462002703565b601e546200034a906001600160a01b031681565b6031546200034a906001600160a01b031681565b620004f462002b17565b601b546200034a906001600160a01b031681565b6200033462002bf1565b620005956200058f3660046200816d565b62002d2d565b6040516200035e9190620081b6565b6200046a62002f05565b62000334620005bf366004620081fc565b62003051565b601c546200034a906001600160a01b031681565b6200033462003479565b601d546200034a906001600160a01b031681565b620003fb6200060836600462007c20565b62003864565b6022546200034a906001600160a01b031681565b62000334620006333660046200823a565b620039cd565b620003fb6200064a3660046200823a565b62003f10565b6020546200034a906001600160a01b031681565b620003ad62003f40565b620003fb6200067f36600462007c20565b62003fa2565b6000546200046a9060ff1681565b6024546200034a906001600160a01b031681565b620006b162003fcf565b604051620006bf9062007b7b565b604051809103906000f080158015620006dc573d6000803e3d6000fd5b50603a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6039602052600090815260409020805460018201546002830180546001600160a01b039093169391926200074b906200825d565b80601f016020809104026020016040519081016040528092919081815260200182805462000779906200825d565b8015620007ca5780601f106200079e57610100808354040283529160200191620007ca565b820191906000526020600020905b815481529060010190602001808311620007ac57829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200082e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200080f575b5050505050905090565b60006001825111620008d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600182511115620008ef57620008e7826200434f565b9150620008d1565b81600081518110620009055762000905620082b2565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000a20926001600160a01b03169163f698da259160048083019260209291908290030181865afa1580156200097a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009a09190620082e1565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1a9190620082e1565b620044db565b565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200082e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200080f575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200082e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200080f575050505050905090565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000b5057600080fd5b505af115801562000b65573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081524263ffffffff851610156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000bd657600080fd5b505afa15801562000beb573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600086136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000c5657600080fd5b505afa15801562000c6b573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505060008613801562000ccf575062000ccb670de0b6b3a76400007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200832a565b8613155b6040518263ffffffff1660e01b815260040162000cf0911515815260200190565b60006040518083038186803b15801562000d0957600080fd5b505afa15801562000d1e573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600085136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000d8957600080fd5b505afa15801562000d9e573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291508490508562000dd5670de0b6b3a764000089620083bd565b62000de191906200832a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152911215600482015260240160006040518083038186803b15801562000e3157600080fd5b505afa15801562000e46573d6000803e3d6000fd5b505050506000604051806101a0016040528062000e857f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b0316815260200162000ec07f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff841660e08201526101000162000f1c600388426012620046ed565b6001600160a01b0316815260200162000f3a600487426012620046ed565b6001600160a01b0390811682526020808301879052610384604093840152603a54603b5493519495506000949083169363b8296fc49316918591829162000f84918991016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262000fd89594939290600401620084f6565b61018060405180830381865afa15801562000ff7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101d91906200858b565b90506200104f81600001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200107f81602001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b620010978160600151670de0b6b3a764000062004a00565b620010af8160800151670de0b6b3a764000062004a00565b620010c081604001516000620048ee565b620010dc8160a0015163ffffffff168463ffffffff1662004a00565b60c0810151620010ee906000620044db565b620010ff8160e00151600062004a00565b620011308161010001517f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc620044db565b62001142816101200151600062004b00565b620011738161014001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b620011a48161016001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b505050505050565b81516000908290825b81811015620011f157620011e683878381518110620011d857620011d8620082b2565b602002602001015162003f10565b9250600101620011b5565b50509093149392505050565b6040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff861611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200126857600080fd5b505afa1580156200127d573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff871611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620012ec57600080fd5b505afa15801562001301573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff861611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200137057600080fd5b505afa15801562001385573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff851611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620013f457600080fd5b505afa15801562001409573d6000803e3d6000fd5b50506040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200147757600080fd5b505af11580156200148c573d6000803e3d6000fd5b505050506000604051806101a00160405280620014ca7f000000000000000000000000000000000000000000000000000000000000000088620045ed565b6001600160a01b03168152602001620015047f000000000000000000000000000000000000000000000000000000000000000087620045ed565b6001600160a01b03168152670de0b6b3a764000060208201526001604082018190526000606083018190526080830181905260a083019190915260c082015263ffffffff60e0820152610100016200157a60036200156487600a6200878f565b620015729061072a620087a0565b4288620046ed565b6001600160a01b03168152602001620015b060046200159b86600a6200878f565b620015a8906001620087a0565b4287620046ed565b6001600160a01b031681526020018560ff168760ff1611620015f857620015d88787620087ba565b620015e5906012620087d6565b620015f290600a6200878f565b6200161e565b620016048688620087ba565b62001611906012620087d6565b6200161e90600a6200878f565b6200162c9061076c620087a0565b8152610384602091820152603a54603b546040519394506000936001600160a01b039283169363b8296fc49390921691859182916200166e918991016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620016c29594939290600401620084f6565b61018060405180830381865afa158015620016e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200170791906200858b565b90506200173981600001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200176981602001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b620017818160600151670de0b6b3a764000062004a00565b620017928160800151600162004a00565b620017a381604001516000620048ee565b620017bf8160a0015163ffffffff1663ffffffff801662004a00565b60c0810151620017d1906000620044db565b620017e28160e00151600062004a00565b620011308161010001517ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775620044db565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620019125760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620018f957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620018a55790505b5050505050815250508152602001906001019062001837565b50505050905090565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528284116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200198157600080fd5b505afa15801562001996573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff86106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001a0457600080fd5b505afa15801562001a19573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062001a4690508486620087f2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b15801562001a9657600080fd5b505afa15801562001aab573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801562001b1657600080fd5b505af115801562001b2b573d6000803e3d6000fd5b505050506000604051806101a0016040528062001b6a7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b0316815260200162001ba57f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e08201526101000162001c08600368056bc75e2d63100000866012620046ed565b6001600160a01b0316815260200162001c2f600468056bc75e2d63100000866012620046ed565b6001600160a01b03168152602001600181526020018481525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363d05f306560e01b6040518060400160405280601281526020017f6f7261636c65207374616c65207072696365000000000000000000000000000081525060405160240162001ccc919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001d409160040162008808565b600060405180830381600087803b15801562001d5b57600080fd5b505af115801562001d70573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc49350911690600090819062001da79087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262001dfb9594939290600401620084f6565b61018060405180830381865afa15801562001e1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e4091906200858b565b5050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200191257838290600052602060002001805462001e8d906200825d565b80601f016020809104026020016040519081016040528092919081815260200182805462001ebb906200825d565b801562001f0c5780601f1062001ee05761010080835404028352916020019162001f0c565b820191906000526020600020905b81548152906001019060200180831162001eee57829003601f168201915b50505050508152602001906001019062001e6b565b6040517f4c63e562000000000000000000000000000000000000000000000000000000008152600085136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001f8857600080fd5b505afa15801562001f9d573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505060008713801562002001575062001ffd670de0b6b3a76400007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200832a565b8713155b6040518263ffffffff1660e01b815260040162002022911515815260200190565b60006040518083038186803b1580156200203b57600080fd5b505afa15801562002050573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600086136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620020bb57600080fd5b505afa158015620020d0573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291508590508662002107670de0b6b3a76400008a620083bd565b6200211391906200832a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529112600482015260240160006040518083038186803b1580156200216257600080fd5b505afa15801562002177573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528385116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620021e157600080fd5b505afa158015620021f6573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200226457600080fd5b505afa15801562002279573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b158015620022e457600080fd5b505af1158015620022f9573d6000803e3d6000fd5b505050506000604051806101a00160405280620023387f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620023737f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e082015261010001620023cd600389426012620046ed565b6001600160a01b03168152602001620023eb600488426012620046ed565b6001600160a01b031681526020018581526020018381525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363d05f306560e01b6040518060400160405280601281526020017f737472696b65206e6f742072656163686564000000000000000000000000000081525060405160240162002487919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620024fb9160040162008808565b600060405180830381600087803b1580156200251657600080fd5b505af11580156200252b573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc493509116906000908190620025629087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620025b69594939290600401620084f6565b61018060405180830381865afa158015620025d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025fb91906200858b565b50505050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620019125760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620026ea57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620026965790505b5050505050815250508152602001906001019062002628565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526107086004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200276b57600080fd5b505af115801562002780573d6000803e3d6000fd5b505050506000604051806101a00160405280620027bf7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620027fa7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e0820152610100016200285d6003680ad78ebc5ac6200000426012620046ed565b6001600160a01b0316815260200162002884600468056bc75e2d63100000426012620046ed565b6001600160a01b031681526020016001815260200161038481525090506200291d603a60009054906101000a90046001600160a01b03166000801b83604051602001620028d291906200840f565b60408051601f19818403018152606080840183526000808552602085810191909152938301819052825190810183526001600160a01b03959095168552918401929092529082015290565b50604080518082018252601281527f737472696b65206e6f742072656163686564000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fd05f306500000000000000000000000000000000000000000000000000000000916200299f9160240162008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262002a139160040162008808565b600060405180830381600087803b15801562002a2e57600080fd5b505af115801562002a43573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc49350911690600090819062002a7a9087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262002ace9594939290600401620084f6565b61018060405180830381865afa15801562002aed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b1391906200858b565b5050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200191257838290600052602060002001805462002b5d906200825d565b80601f016020809104026020016040519081016040528092919081815260200182805462002b8b906200825d565b801562002bdc5780601f1062002bb05761010080835404028352916020019162002bdc565b820191906000526020600020905b81548152906001019060200180831162002bbe57829003601f168201915b50505050508152602001906001019062002b3b565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000a20946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562002c6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c939190620082e1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562002cf5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d1b91906200881d565b6034546001600160a01b0316620048ee565b6060600183511162002dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c656166000000000000000000000000000000000000000000000000000000006064820152608401620008c8565b600062002dcf845162003864565b67ffffffffffffffff81111562002dea5762002dea62007d13565b60405190808252806020026020018201604052801562002e14578160200160208202803683370190505b50905060005b60018551111562002efb578360011660010362002e785784600185038151811062002e495762002e49620082b2565b602002602001015182828151811062002e665762002e66620082b2565b60200260200101818152505062002edf565b8451846001010362002e9d576000801b82828151811062002e665762002e66620082b2565b84846001018151811062002eb55762002eb5620082b2565b602002602001015182828151811062002ed25762002ed2620082b2565b6020026020010181815250505b60010160028404935062002ef3856200434f565b945062002e1a565b5090505b92915050565b60008054610100900460ff161562002f265750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200304c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162002fce917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200883d565b60408051601f198184030181529082905262002fea9162008887565b6000604051808303816000865af19150503d806000811462003029576040519150601f19603f3d011682016040523d82523d6000602084013e6200302e565b606091505b5091505080806020019051810190620030489190620088a5565b9150505b919050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff828116908416116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620030c057600080fd5b505afa158015620030d5573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815263ffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200314557600080fd5b505af11580156200315a573d6000803e3d6000fd5b505050506000604051806101a00160405280620031997f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620031d47f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff841660e08201526101000162003239600368056bc75e2d63100000426012620046ed565b6001600160a01b0316815260200162003260600468056bc75e2d63100000426012620046ed565b6001600160a01b031681526020016001815260200161038481525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363c8fc272560e01b6040518060400160405280600d81526020017f6f72646572206578706972656400000000000000000000000000000000000000815250604051602401620032ff919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620033739160040162008808565b600060405180830381600087803b1580156200338e57600080fd5b505af1158015620033a3573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc493509116906000908190620033da9087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200342e9594939290600401620084f6565b61018060405180830381865afa1580156200344d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200347391906200858b565b50505050565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620034e357600080fd5b505af1158015620034f8573d6000803e3d6000fd5b505050506000604051806101a00160405280620035377f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620035727f00000000000000000000000000000000000000000000000000000000000000006006620045ed565b6001600160a01b03168152670de0b6b3a764000060208201526001604082018190526000606083018190526080830181905260a083019190915260c082015263ffffffff60e082015261010001620035d46003642ab66d2e97426008620046ed565b6001600160a01b03168152602001620035f660046305f5e100426008620046ed565b6001600160a01b0390811682526866ffcbfd5e5a300000602080840191909152610384604093840152603a54603b5493519495506000949083169363b8296fc4931691859182916200364b918991016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200369f9594939290600401620084f6565b61018060405180830381865afa158015620036be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036e491906200858b565b90506200371681600001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200374681602001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200375e8160600151670de0b6b3a764000062004a00565b6200376f8160800151600162004a00565b6200378081604001516000620048ee565b6200379c8160a0015163ffffffff1663ffffffff801662004a00565b60c0810151620037ae906000620044db565b620037bf8160e00151600062004a00565b620037f08161010001517ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775620044db565b62003802816101200151600062004b00565b620038338161014001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b62002b138161016001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b6000600182116200387757506000919050565b6000827001000000000000000000000000000000008110620038a857608093841c93620038a59083620088c3565b91505b680100000000000000008410620038ce57604093841c93620038cb9083620088c3565b91505b6401000000008410620038f057602093841c93620038ed9083620088c3565b91505b6201000084106200391057601093841c936200390d9083620088c3565b91505b61010084106200392f57600893841c936200392c9083620088c3565b91505b601084106200394d57600493841c936200394a9083620088c3565b91505b600484106200396b57600293841c93620039689083620088c3565b91505b60028410620039845762003981600183620088c3565b91505b6000816200399581196001620088c3565b1690508181148015620039a85750600083115b15620039b75750909392505050565b620039c4836001620088c3565b95945050505050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815260008313156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003a3557600080fd5b505afa15801562003a4a573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600084136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003ab557600080fd5b505afa15801562003aca573d6000803e3d6000fd5b50506040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526107086004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801562003b3657600080fd5b505af115801562003b4b573d6000803e3d6000fd5b505050506000604051806101a0016040528062003b8a7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b0316815260200162003bc57f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e08201526101000162003c1f600386426012620046ed565b6001600160a01b0316815260200162003c3d600485426012620046ed565b6001600160a01b031681526020016001815260200161038481525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363c8fc272560e01b6040518060400160405280601481526020017f6f7261636c6520696e76616c696420707269636500000000000000000000000081525060405160240162003cdc919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262003d509160040162008808565b600060405180830381600087803b15801562003d6b57600080fd5b505af115801562003d80573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc49350911690600090819062003db79087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262003e0b9594939290600401620084f6565b61018060405180830381865afa15801562003e2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e5091906200858b565b5062003e61600383426012620046ed565b6001600160a01b031661012082015262003e80600484426012620046ed565b6001600160a01b0316610140820152604080518082018252601481527f6f7261636c6520696e76616c696420707269636500000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620032ff9160240162008808565b6000818310801562003f2a57836000528260205262003f33565b82600052836020525b5050604060002092915050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200082e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200080f575050505050905090565b6000808219600101831683145b831562003fc757600193841c93919091019062003faf565b900392915050565b62003fd962004cf4565b6025546040516001600160a01b039091169062003ff69062007b89565b6001600160a01b039091168152602001604051809103906000f08015801562004023573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da250000000000000000000000000000000000000000000000000000000081529051620041ab94938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa158015620040e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200410a9190620082e1565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062004194620050b9565b6031546001600160a01b0316949392919062005193565b604051620041b99062007b97565b604051809103906000f080158015620041d6573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200421d9062007ba5565b604051809103906000f0801580156200423a573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620042819062007bb3565b604051809103906000f0801580156200429e573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603454604051911690620042e79062007bc1565b6001600160a01b039091168152602001604051809103906000f08015801562004314573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606080600083519050806001166001036200440c576002810460010167ffffffffffffffff81111562004386576200438662007d13565b604051908082528060200260200182016040528015620043b0578160200160208202803683370190505b509150620043e1846001830381518110620043cf57620043cf620082b2565b60200260200101516000801b62003f10565b82600184510381518110620043fa57620043fa620082b2565b60200260200101818152505062004459565b6002810467ffffffffffffffff8111156200442b576200442b62007d13565b60405190808252806020026020018201604052801562004455578160200160208202803683370190505b5091505b6000805b60018303811015620044d157620044a2868281518110620044825762004482620082b2565b6020026020010151878360010181518110620011d857620011d8620082b2565b848381518110620044b757620044b7620082b2565b60209081029190910101526001909101906002016200445d565b5091949350505050565b80821462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045699060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620045a29190620088d9565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620045db919062008925565b60405180910390a162002b13620053c6565b6040805160048152602481018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000179052825160ff85168183015283518082039092018252808401938490527fb96213e4000000000000000000000000000000000000000000000000000000009093528492737109709ecfa91a80626ff3989d68f67f5b1dd12d9263b96213e492620046b3928692919060440162008963565b600060405180830381600087803b158015620046ce57600080fd5b505af1158015620046e3573d6000803e3d6000fd5b5050505092915050565b6040805160048152602481018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ffeaf968c0000000000000000000000000000000000000000000000000000000017905282516000918101829052928301869052606083018190526080830185905260a08301528591737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b96213e49184919060c0016040516020818303038152906040526040518463ffffffff1660e01b8152600401620047ba9392919062008963565b600060405180830381600087803b158015620047d557600080fd5b505af1158015620047ea573d6000803e3d6000fd5b50506040805160048152602481018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000179052825160ff88168183015283518082039092018252808401938490527fb96213e400000000000000000000000000000000000000000000000000000000909352737109709ecfa91a80626ff3989d68f67f5b1dd12d945063b96213e49350620048b2928a92919060440162008963565b600060405180830381600087803b158015620048cd57600080fd5b505af1158015620048e2573d6000803e3d6000fd5b50505050949350505050565b806001600160a01b0316826001600160a01b03161462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200498e9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620049c79190620089a5565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620045db9190620089fa565b80821462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a8e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004ac79190620088d9565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620045db919062008925565b8015158215151462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004b929060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262004bfd576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062004c34565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162004c43919062008a38565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162004cae576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062004ce5565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620045db919062008a8a565b62004cfe6200550d565b62004d3e6040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062005969565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f6200000000000000000000000000000000000000000000000000000000009181019190915262004dc19062005969565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c0000000000000000000000000000000000000000000000000000009181019190915262004e449062005969565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462004ea3929182169116683635c9adc5dea0000062005aef565b602254602d5462004ecb916001600160a01b039081169116683635c9adc5dea0000062005aef565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062004f115762004f11620082b2565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062004f455762004f45620082b2565b6001600160a01b039283166020918202929092010152602f5482519116908290600290811062004f795762004f79620082b2565b6001600160a01b039283166020918202929092010152601c54601b54601e5462004fb3939283169291821691859160029116600062005b03565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200500b939283169291821691859160029116600162005b03565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620050629392831692918216918591600291168162005b03565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602154603154620050b6929182169116683635c9adc5dea0000062005aef565b50565b604080516002808252606082810190935260009190816020015b6040805180820190915260008082526020820152815260200190600190039081620050d357505060408051808201909152602b546001600160a01b03168152602c5460208201528151919250908290600090620051345762005134620082b2565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e54918101919091528151829060019081106200517d576200517d620082b2565b602002602001018190525062002eff8162005c07565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620051d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051fa9190620082e1565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620052419a9998979695949392919062008b04565b602060405180830381865afa1580156200525f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052859190620082e1565b9050620052928362005c07565b9250606060005b84518110156200530f5781620052d584878481518110620052be57620052be620082b2565b602002602001015162005d4090919063ffffffff16565b604051602001620052e892919062008b7b565b60405160208183030381529060405291508080620053069062008bae565b91505062005299565b50886001600160a01b0316636a7612028989898960008060008060008b6040516020016200533e919062008887565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620053749a9998979695949392919062008be9565b6020604051808303816000875af115801562005394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053ba9190620088a5565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620054df5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200547a92916020016200883d565b60408051601f1981840301815290829052620054969162008887565b6000604051808303816000865af19150503d8060008114620054d5576040519150601f19603f3d011682016040523d82523d6000602084013e620054da565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6200554d6040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062005969565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620055d09062005969565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c74000000000000000000000000000000000000000000000091810191909152620056539062005e6a565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516000906200569c9062007bcf565b604051809103906000f080158015620056b9573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b1580156200571d57600080fd5b505af115801562005732573d6000803e3d6000fd5b50506024546040518493506001600160a01b039091169150620057559062007bdd565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562005789573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562005816573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200583c91906200881d565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620058da57600080fd5b505af1158015620058ef573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200595457600080fd5b505af115801562001e40573d6000803e3d6000fd5b604080518082019091526000808252602082015260008260405160200162005992919062008887565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562005a17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a3d91906200881d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062005a94908490889060040162008c70565b600060405180830381600087803b15801562005aaf57600080fd5b505af115801562005ac4573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b62005afe838383600062005e7e565b505050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b8888600089600080600060405160240162005b3f979695949392919062008c94565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825262005bb69291879060040162008cfe565b6020604051808303816000875af115801562005bd6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bfc91906200881d565b979650505050505050565b606060005b825181101562005d3957600062005c25826001620088c3565b90505b835181101562005d235783818151811062005c475762005c47620082b2565b6020026020010151600001516001600160a01b031684838151811062005c715762005c71620082b2565b6020026020010151600001516001600160a01b0316111562005d0e57600084838151811062005ca45762005ca4620082b2565b6020026020010151905084828151811062005cc35762005cc3620082b2565b602002602001015185848151811062005ce05762005ce0620082b2565b60200260200101819052508085838151811062005d015762005d01620082b2565b6020026020010181905250505b8062005d1a8162008bae565b91505062005c28565b508062005d308162008bae565b91505062005c0c565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562005dc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005de7919062008d32565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b600062005e778262006115565b5092915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162005f029162008887565b6000604051808303816000865af19150503d806000811462005f41576040519150601f19603f3d011682016040523d82523d6000602084013e62005f46565b606091505b5091505060008180602001905181019062005f629190620082e1565b905062005fb58462005fae8762005fa77f70a082310000000000000000000000000000000000000000000000000000000062005fa060058d62006263565b90620062a3565b90620062dc565b9062006305565b8215620011a45760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b038916916200602e919062008887565b6000604051808303816000865af19150503d80600081146200606d576040519150601f19603f3d011682016040523d82523d6000602084013e62006072565b606091505b509150506000818060200190518101906200608e9190620082e1565b905082861015620060b957620060a58684620087f2565b620060b19082620087f2565b9050620060d4565b620060c58387620087f2565b620060d19082620088c3565b90505b6200610b8162005fae7f18160ddd0000000000000000000000000000000000000000000000000000000062005fa060058d62006263565b5050505050505050565b600080826040516020016200612b919062008887565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620061ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061d391906200881d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200622a908590879060040162008c70565b600060405180830381600087803b1580156200624557600080fd5b505af11580156200625a573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200629c565b6002820180546001810182556000918252602082206001600160a01b038416910155826200629c565b62002b138282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200637e57602002820191906000526020600020905b81548152602001906001019080831162006369575b505050505090506000836200639383620067df565b604051602001620063a69291906200883d565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a1683528152928120919450909290916200641291869188910162008d6c565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200644d576200644b876200688c565b505b6001600160a01b0385166000908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905190918391620064a691879189910162008d6c565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620064ed919062008887565b600060405180830381855afa9150503d80600081146200652a576040519150601f19603f3d011682016040523d82523d6000602084013e6200652f565b606091505b5091506200654c90508162006546886020620087a0565b62006899565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620065cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065f29190620082e1565b9050808214620066d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620008c8565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b1580156200674e57600080fd5b505af115801562006763573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620067cb60028b01600062007beb565b896004016000905550505050505050505050565b6060600082516020620067f39190620087a0565b67ffffffffffffffff8111156200680e576200680e62007d13565b6040519080825280601f01601f19166020018201604052801562006839576020820181803683370190505b50905060005b835181101562005e77576000848281518110620068605762006860620082b2565b602002602001015190508082602002602001840152508080620068839062008bae565b9150506200683f565b600062002eff826200693b565b60008060006020855111620068b0578451620068b3565b60205b905060005b818110156200693157620068ce816008620087a0565b86620068db8388620088c3565b81518110620068ee57620068ee620082b2565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620069288162008bae565b915050620068b8565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620069ad57602002820191906000526020600020905b81548152602001906001019080831162006998575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062006a119250859187910162008d6c565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562006ac8576001600160a01b0384166000908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162006a9891859187910162008d6c565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362006ad68362007a36565b60405160200162006ae99291906200883d565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562006b5957600080fd5b505af115801562006b6e573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162006b8f919062008887565b600060405180830381855afa9150503d806000811462006bcc576040519150601f19603f3d011682016040523d82523d6000602084013e62006bd1565b606091505b50915062006bee90508162006be8876020620087a0565b62007ae3565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562006c69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006c93919081019062008e0a565b5090508051600103620070c55760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062006ceb5762006ceb620082b2565b60200260200101516040518363ffffffff1660e01b815260040162006d259291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006d699190620082e1565b90508062006dd4577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062006da95762006da9620082b2565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462006eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620008c8565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162006ee992919062008d6c565b604051602081830303815290604052805190602001208560008151811062006f155762006f15620082b2565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062006f875762006f87620082b2565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262006fea918a918c910162008d6c565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c168552825282842092519093916200706c918a918c910162008d6c565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200782e565b600181511115620077a35760005b81518110156200779c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620071275762007127620082b2565b60200260200101516040518363ffffffff1660e01b8152600401620071619291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200717f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071a59190620082e1565b9050806200720f577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620071e457620071e4620082b2565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a858581518110620072575762007257620082b2565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b158015620072e757600080fd5b505af1158015620072fc573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200731e919062008887565b600060405180830381855afa9150503d80600081146200735b576040519150601f19603f3d011682016040523d82523d6000602084013e62007360565b606091505b509092509050620073788162006be88b6020620087a0565b9550818015620073a757507f133700000000000000000000000000000000000000000000000000000000000086145b15620076b1577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620073e592919062008d6c565b60405160208183030381529060405280519060200120888881518110620074105762007410620082b2565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1848481518110620074815762007481620082b2565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f1683528452808220905192939092620074e4918d918f910162008d6c565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c6040516020016200759b92919062008d6c565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200761e576200761e620082b2565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200768f57600080fd5b505af1158015620076a4573d6000803e3d6000fd5b505050505050506200779c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620076f957620076f9620082b2565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200776a57600080fd5b505af11580156200777f573d6000803e3d6000fd5b505050505050508080620077939062008bae565b915050620070d3565b506200782e565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620008c8565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200788a9188918a910162008d6c565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620008c8565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620079a560028a01600062007beb565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162007a039188918a910162008d6c565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062007a4a9190620087a0565b67ffffffffffffffff81111562007a655762007a6562007d13565b6040519080825280601f01601f19166020018201604052801562007a90576020820181803683370190505b50905060005b835181101562005e7757600084828151811062007ab75762007ab7620082b2565b60200260200101519050808260200260200184015250808062007ada9062008bae565b91505062007a96565b6000806000602085511162007afa57845162007afd565b60205b905060005b81811015620069315762007b18816008620087a0565b8662007b258388620088c3565b8151811062007b385762007b38620082b2565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062007b728162008bae565b91505062007b02565b6110c38062008e7683390190565b61237a8062009f3983390190565b61013c806200c2b383390190565b610809806200c3ef83390190565b610200806200cbf883390190565b611246806200cdf883390190565b610d06806200e03e83390190565b6153a2806200ed4483390190565b5080546000825590600052602060002090810190620050b691905b8082111562007c1c576000815560010162007c06565b5090565b60006020828403121562007c3357600080fd5b5035919050565b60005b8381101562007c5757818101518382015260200162007c3d565b50506000910152565b6000815180845262007c7a81602086016020860162007c3a565b601f01601f19169290920160200192915050565b6001600160a01b0384168152826020820152606060408201526000620039c4606083018462007c60565b600081518084526020808501945080840160005b8381101562007cf35781516001600160a01b03168752958201959082019060010162007ccc565b509495945050505050565b6020815260006200629c602083018462007cb8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562007d695762007d6962007d13565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562007d9b5762007d9b62007d13565b604052919050565b600067ffffffffffffffff82111562007dc05762007dc062007d13565b5060051b60200190565b600082601f83011262007ddc57600080fd5b8135602062007df562007def8362007da3565b62007d6f565b82815260059290921b8401810191818101908684111562007e1557600080fd5b8286015b8481101562007e32578035835291830191830162007e19565b509695505050505050565b60006020828403121562007e5057600080fd5b813567ffffffffffffffff81111562007e6857600080fd5b62007e768482850162007dca565b949350505050565b63ffffffff81168114620050b657600080fd5b6000806000806080858703121562007ea857600080fd5b843593506020850135925060408501359150606085013562007eca8162007e7e565b939692955090935050565b60008060006060848603121562007eeb57600080fd5b83359250602084013567ffffffffffffffff81111562007f0a57600080fd5b62007f188682870162007dca565b925050604084013590509250925092565b60ff81168114620050b657600080fd5b6000806000806080858703121562007f5057600080fd5b843562007f5d8162007f29565b9350602085013562007f6f8162007f29565b9250604085013562007f818162007f29565b9150606085013562007eca8162007f29565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008071578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200805b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062008017565b50978a0197955050509187019160010162007fbb565b50919998505050505050505050565b6000806000606084860312156200809657600080fd5b505081359360208301359350604090920135919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008124577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200811185835162007c60565b94509285019290850190600101620080d4565b5092979650505050505050565b600080600080600060a086880312156200814a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156200818157600080fd5b823567ffffffffffffffff8111156200819957600080fd5b620081a78582860162007dca565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b81811015620081f057835183529284019291840191600101620081d2565b50909695505050505050565b600080604083850312156200821057600080fd5b82356200821d8162007e7e565b915060208301356200822f8162007e7e565b809150509250929050565b600080604083850312156200824e57600080fd5b50508035926020909101359150565b600181811c908216806200827257607f821691505b602082108103620082ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215620082f457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262008361577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615620083b857620083b8620082fb565b500590565b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615620083f857620083f8620082fb565b818105831482151762002eff5762002eff620082fb565b81516001600160a01b031681526101a0810160208301516200843c60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a08301516200847660a08401826001600160a01b03169052565b5060c08301516200848b60c084018215159052565b5060e0830151620084a060e084018215159052565b506101008381015163ffffffff1690830152610120808401516001600160a01b03908116918401919091526101408085015190911690830152610160808401519083015261018092830151929091019190915290565b60006001600160a01b03808816835280871660208401525084604083015260a060608301526200852a60a083018562007c60565b82810360808401526200853e818562007c60565b98975050505050505050565b6001600160a01b0381168114620050b657600080fd5b80516200304c816200854a565b80516200304c8162007e7e565b805180151581146200304c57600080fd5b600061018082840312156200859f57600080fd5b620085a962007d42565b620085b48362008560565b8152620085c46020840162008560565b6020820152620085d76040840162008560565b60408201526060830151606082015260808301516080820152620085fe60a084016200856d565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120620086338185016200857a565b908201526101408381015190820152610160928301519281019290925250919050565b600181815b80851115620086b557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620086995762008699620082fb565b80851615620086a757918102915b93841c93908002906200865b565b509250929050565b600082620086ce5750600162002eff565b81620086dd5750600062002eff565b8160018114620086f65760028114620087015762008721565b600191505062002eff565b60ff841115620087155762008715620082fb565b50506001821b62002eff565b5060208310610133831016604e8410600b841016171562008746575081810a62002eff565b62008752838362008656565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620087875762008787620082fb565b029392505050565b60006200629c60ff841683620086bd565b808202811582820484141762002eff5762002eff620082fb565b60ff828116828216039081111562002eff5762002eff620082fb565b60ff818116838216019081111562002eff5762002eff620082fb565b8181038181111562002eff5762002eff620082fb565b6020815260006200629c602083018462007c60565b6000602082840312156200883057600080fd5b81516200629c816200854a565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200887981600485016020870162007c3a565b919091016004019392505050565b600082516200889b81846020870162007c3a565b9190910192915050565b600060208284031215620088b857600080fd5b6200629c826200857a565b8082018082111562002eff5762002eff620082fb565b6040815260006200891760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200891760408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6001600160a01b038416815260606020820152600062008987606083018562007c60565b82810360408401526200899b818562007c60565b9695505050505050565b604081526000620089e360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620089e360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062008a7660408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b828103602084015262007e76818562007c60565b60408152600062008a7660408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6002811062008b00577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262008b308285018d62007c60565b925062008b41606085018c62008ac8565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b6000835162008b8f81846020880162007c3a565b83519083019062008ba581836020880162007c3a565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362008be25762008be2620082fb565b5060010190565b60006101406001600160a01b03808e1684528c602085015281604085015262008c158285018d62007c60565b915062008c26606085018c62008ac8565b8960808501528860a08501528760c085015280871660e08501528086166101008501525082810361012084015262008c5f818562007c60565b9d9c50505050505050505050505050565b6001600160a01b038316815260406020820152600062007e76604083018462007c60565b600061010080835262008caa8184018b62007cb8565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b038416815260606020820152600062008d22606083018562007c60565b9050826040830152949350505050565b60008060006060848603121562008d4857600080fd5b835162008d558162007f29565b602085015160409095015190969495509392505050565b825160009082906020808701845b8381101562008d985781518552938201939082019060010162008d7a565b5050948252509092019392505050565b600082601f83011262008dba57600080fd5b8151602062008dcd62007def8362007da3565b82815260059290921b8401810191818101908684111562008ded57600080fd5b8286015b8481101562007e32578051835291830191830162008df1565b6000806040838503121562008e1e57600080fd5b825167ffffffffffffffff8082111562008e3757600080fd5b62008e458683870162008da8565b9350602085015191508082111562008e5c57600080fd5b5062008e6b8582860162008da8565b915050925092905056fe608060405234801561001057600080fd5b506110a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610885565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610945565b61013c565b005b610096610091366004610a33565b610259565b6040516100659190610ad2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610ca1565b90504281610100015163ffffffff16101561034057604080518082018252600d81527f6f72646572206578706972656400000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60008082610120015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b79190610d98565b5093505092505060008084610140015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104359190610d98565b5093505092505060008413801561044c5750600082135b6104b557604080518082018252601481527f6f7261636c6520696e76616c6964207072696365000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6101808501516104c59042610e17565b83101580156104e357506101808501516104df9042610e17565b8110155b61054c57604080518082018252601281527f6f7261636c65207374616c652070726963650000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6105cb8486610120015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c49190610e2a565b6012610812565b93506106218286610140015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b6101608601519092508261063d670de0b6b3a764000087610e4d565b6106479190610e99565b13156106b257604080518082018252601281527f737472696b65206e6f7420726561636865640000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b50505050604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001826040015181526020018260600151815260200182610100015163ffffffff16815260200182608001518152602001600081526020018260c00151610787577f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc6107a9565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467755b81526020018260e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9815250915050979650505050505050565b60008160ff168360ff16101561084b5761082c8383610f28565b61083a9060ff16600a611061565b6108449085610e4d565b905061087e565b8160ff168360ff16111561087b576108638284610f28565b6108719060ff16600a611061565b6108449085610e99565b50825b9392505050565b60006020828403121561089757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461087e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108e957600080fd5b50565b80356108f7816108c7565b919050565b60008083601f84011261090e57600080fd5b50813567ffffffffffffffff81111561092657600080fd5b60208301915083602082850101111561093e57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561096557600080fd5b61096f8b356108c7565b8a35995060208b0135610981816108c7565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156109b357600080fd5b6109bf8e838f016108fc565b909750955060c08d01359150808211156109d857600080fd5b506109e58d828e016108fc565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610a1e57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a4e57600080fd5b8735610a59816108c7565b96506020880135610a69816108c7565b955060408801359450606088013567ffffffffffffffff80821115610a8d57600080fd5b610a998b838c016108fc565b909650945060808a0135915080821115610ab257600080fd5b50610abf8a828b016108fc565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610b18602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b40604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b6c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610ba18285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bed57858101830151858201604001528201610bd1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6040516101a0810167ffffffffffffffff81118282101715610c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803580151581146108f757600080fd5b803563ffffffff811681146108f757600080fd5b60006101a08284031215610cb457600080fd5b610cbc610c2c565b610cc5836108ec565b8152610cd3602084016108ec565b6020820152604083013560408201526060830135606082015260808301356080820152610d0260a084016108ec565b60a0820152610d1360c08401610c7d565b60c0820152610d2460e08401610c7d565b60e0820152610100610d37818501610c8d565b90820152610120610d498482016108ec565b90820152610140610d5b8482016108ec565b908201526101608381013590820152610180928301359281019290925250919050565b805169ffffffffffffffffffff811681146108f757600080fd5b600080600080600060a08688031215610db057600080fd5b610db986610d7e565b9450602086015193506040860151925060608601519150610ddc60808701610d7e565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610de8565b600060208284031215610e3c57600080fd5b815160ff8116811461087e57600080fd5b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615610e8557610e85610de8565b818105831482151761013657610136610de8565b600082610ecf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610f2357610f23610de8565b500590565b60ff828116828216039081111561013657610136610de8565b600181815b80851115610f9a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f8057610f80610de8565b80851615610f8d57918102915b93841c9390800290610f46565b509250929050565b600082610fb157506001610136565b81610fbe57506000610136565b8160018114610fd45760028114610fde57610ffa565b6001915050610136565b60ff841115610fef57610fef610de8565b50506001821b610136565b5060208310610133831016604e8410600b841016171561101d575081810a610136565b6110278383610f41565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105957611059610de8565b029392505050565b600061087e8383610fa256fea26469706673582212209b320a2b5454b0ecefde7c01c2b8ff316ef7bd8175de6191fe74ea73da2d6d4064736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a2646970667358221220e92f39f1391050fcdf538b5f78e4aeb2aa1cc09419a3891a194b5df2f5559ef964736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"388:15407:111:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:30;;;;;;;;;;454:50:111;;554:3;510:49;;388:15407;;;;;;;;;;1168:10:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:116;:22;;-1:-1:-1;;;;;;1156:22:116;-1:-1:-1;;;;;1156:22:116;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:116;:32;;-1:-1:-1;;;;;;1188:32:116;-1:-1:-1;;;;;1188:32:116;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:116;:44;;-1:-1:-1;;;;;;1230:44:116;-1:-1:-1;;;;;1230:44:116;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:116;:42;;-1:-1:-1;;;;;;1323:42:116;-1:-1:-1;;;;;1323:42:116;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:116;:27;;-1:-1:-1;;;;;;1375:27:116;-1:-1:-1;;;;;1375:27:116;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:116;:37;;-1:-1:-1;;;;;;1412:37:116;-1:-1:-1;;;;;1412:37:116;;;;;;;;;;875:30:117;;;;;:::i;:::-;317:2:122;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:122;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:122;501:19;;494:33;559:3;544:19;875:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:117;:56;;-1:-1:-1;;;;;;851:56:117;-1:-1:-1;;;;;851:56:117;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:122;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:122;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:122;1061:19;;1054:33;1119:3;1104:19;941:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:117;:56;;-1:-1:-1;;;;;;917:56:117;-1:-1:-1;;;;;917:56:117;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:122;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:122;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:122;1621:19;;1614:33;1679:3;1664:19;1007:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:117;:56;;-1:-1:-1;;;;;;983:56:117;-1:-1:-1;;;;;983:56:117;;;;;;;;;;388:15407:111;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:122:-;388:15407:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620003255760003560e01c8063916a17c611620001b1578063c7738c7111620000f5578063dd1d259911620000a3578063e27d5153116200007a578063e27d5153146200066e578063fa7626d41462000685578063fbfa77cf146200069357600080fd5b8063dd1d25991462000639578063dfe274a91462000650578063e20c9f71146200066457600080fd5b8063cf06c7b711620000d8578063cf06c7b714620005f7578063d21220a7146200060e578063d7875278146200062257600080fd5b8063c7738c7114620005d9578063c80916d414620005e357600080fd5b8063b62654fb116200015f578063ba414fa61162000136578063ba414fa614620005a4578063bc8f70a914620005ae578063c45a015514620005c557600080fd5b8063b62654fb1462000560578063b716db661462000574578063b8616195146200057e57600080fd5b80639fbcc9ad11620001945780639fbcc9ad146200052e578063ad9b04751462000542578063b5508aa9146200055657600080fd5b8063916a17c6146200051a5780639989a732146200052457600080fd5b80633f7286f4116200027957806366d9a9a011620002275780638406c07911620001fe5780638406c07914620004d657806385226c8114620004ea5780638807cc5c146200050357600080fd5b806366d9a9a014620004925780636bd4647514620004ab5780637d499aa414620004c257600080fd5b806351160630116200025c57806351160630146200043f57806358161a42146200045357806360cf299c146200047b57600080fd5b80633f7286f4146200041e5780634e050488146200042857600080fd5b806325be124e11620002d75780632e08d60211620002ba5780632e08d60214620003e4578063329696ac146200040a5780633e5e3c23146200041457600080fd5b806325be124e14620003bc578063294402cc14620003d057600080fd5b80630dfe1681116200030c5780630dfe16811462000367578063151bcd2c146200037b5780631ed7831c14620003a357600080fd5b80630a9254e4146200032a5780630c8548f51462000336575b600080fd5b62000334620006a7565b005b6033546200034a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6021546200034a906001600160a01b031681565b620003926200038c36600462007c20565b62000717565b6040516200035e9392919062007c8e565b620003ad620007d4565b6040516200035e919062007cfe565b6023546200034a906001600160a01b031681565b601f546200034a906001600160a01b031681565b620003fb620003f536600462007e3d565b62000838565b6040519081526020016200035e565b6200033462000914565b620003ad62000a22565b620003ad62000a84565b620003346200043936600462007e91565b62000ae6565b6025546200034a906001600160a01b031681565b6200046a6200046436600462007ed5565b620011ac565b60405190151581526020016200035e565b620003346200048c36600462007f39565b620011fd565b6200049c62001813565b6040516200035e919062007f93565b62000334620004bc36600462008080565b6200191b565b6032546200034a906001600160a01b031681565b602a546200034a906001600160a01b031681565b620004f462001e47565b6040516200035e9190620080ad565b620003346200051436600462008131565b62001f21565b6200049c62002604565b6200033462002703565b601e546200034a906001600160a01b031681565b6031546200034a906001600160a01b031681565b620004f462002b17565b601b546200034a906001600160a01b031681565b6200033462002bf1565b620005956200058f3660046200816d565b62002d2d565b6040516200035e9190620081b6565b6200046a62002f05565b62000334620005bf366004620081fc565b62003051565b601c546200034a906001600160a01b031681565b6200033462003479565b601d546200034a906001600160a01b031681565b620003fb6200060836600462007c20565b62003864565b6022546200034a906001600160a01b031681565b62000334620006333660046200823a565b620039cd565b620003fb6200064a3660046200823a565b62003f10565b6020546200034a906001600160a01b031681565b620003ad62003f40565b620003fb6200067f36600462007c20565b62003fa2565b6000546200046a9060ff1681565b6024546200034a906001600160a01b031681565b620006b162003fcf565b604051620006bf9062007b7b565b604051809103906000f080158015620006dc573d6000803e3d6000fd5b50603a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6039602052600090815260409020805460018201546002830180546001600160a01b039093169391926200074b906200825d565b80601f016020809104026020016040519081016040528092919081815260200182805462000779906200825d565b8015620007ca5780601f106200079e57610100808354040283529160200191620007ca565b820191906000526020600020905b815481529060010190602001808311620007ac57829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200082e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200080f575b5050505050905090565b60006001825111620008d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600182511115620008ef57620008e7826200434f565b9150620008d1565b81600081518110620009055762000905620082b2565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000a20926001600160a01b03169163f698da259160048083019260209291908290030181865afa1580156200097a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009a09190620082e1565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1a9190620082e1565b620044db565b565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200082e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200080f575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200082e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200080f575050505050905090565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000b5057600080fd5b505af115801562000b65573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081524263ffffffff851610156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000bd657600080fd5b505afa15801562000beb573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600086136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000c5657600080fd5b505afa15801562000c6b573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505060008613801562000ccf575062000ccb670de0b6b3a76400007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200832a565b8613155b6040518263ffffffff1660e01b815260040162000cf0911515815260200190565b60006040518083038186803b15801562000d0957600080fd5b505afa15801562000d1e573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600085136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000d8957600080fd5b505afa15801562000d9e573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291508490508562000dd5670de0b6b3a764000089620083bd565b62000de191906200832a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152911215600482015260240160006040518083038186803b15801562000e3157600080fd5b505afa15801562000e46573d6000803e3d6000fd5b505050506000604051806101a0016040528062000e857f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b0316815260200162000ec07f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff841660e08201526101000162000f1c600388426012620046ed565b6001600160a01b0316815260200162000f3a600487426012620046ed565b6001600160a01b0390811682526020808301879052610384604093840152603a54603b5493519495506000949083169363b8296fc49316918591829162000f84918991016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262000fd89594939290600401620084f6565b61018060405180830381865afa15801562000ff7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101d91906200858b565b90506200104f81600001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200107f81602001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b620010978160600151670de0b6b3a764000062004a00565b620010af8160800151670de0b6b3a764000062004a00565b620010c081604001516000620048ee565b620010dc8160a0015163ffffffff168463ffffffff1662004a00565b60c0810151620010ee906000620044db565b620010ff8160e00151600062004a00565b620011308161010001517f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc620044db565b62001142816101200151600062004b00565b620011738161014001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b620011a48161016001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b505050505050565b81516000908290825b81811015620011f157620011e683878381518110620011d857620011d8620082b2565b602002602001015162003f10565b9250600101620011b5565b50509093149392505050565b6040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff861611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200126857600080fd5b505afa1580156200127d573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff871611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620012ec57600080fd5b505afa15801562001301573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff861611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200137057600080fd5b505afa15801562001385573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152602d60ff851611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620013f457600080fd5b505afa15801562001409573d6000803e3d6000fd5b50506040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200147757600080fd5b505af11580156200148c573d6000803e3d6000fd5b505050506000604051806101a00160405280620014ca7f000000000000000000000000000000000000000000000000000000000000000088620045ed565b6001600160a01b03168152602001620015047f000000000000000000000000000000000000000000000000000000000000000087620045ed565b6001600160a01b03168152670de0b6b3a764000060208201526001604082018190526000606083018190526080830181905260a083019190915260c082015263ffffffff60e0820152610100016200157a60036200156487600a6200878f565b620015729061072a620087a0565b4288620046ed565b6001600160a01b03168152602001620015b060046200159b86600a6200878f565b620015a8906001620087a0565b4287620046ed565b6001600160a01b031681526020018560ff168760ff1611620015f857620015d88787620087ba565b620015e5906012620087d6565b620015f290600a6200878f565b6200161e565b620016048688620087ba565b62001611906012620087d6565b6200161e90600a6200878f565b6200162c9061076c620087a0565b8152610384602091820152603a54603b546040519394506000936001600160a01b039283169363b8296fc49390921691859182916200166e918991016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620016c29594939290600401620084f6565b61018060405180830381865afa158015620016e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200170791906200858b565b90506200173981600001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200176981602001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b620017818160600151670de0b6b3a764000062004a00565b620017928160800151600162004a00565b620017a381604001516000620048ee565b620017bf8160a0015163ffffffff1663ffffffff801662004a00565b60c0810151620017d1906000620044db565b620017e28160e00151600062004a00565b620011308161010001517ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775620044db565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620019125760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620018f957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620018a55790505b5050505050815250508152602001906001019062001837565b50505050905090565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528284116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200198157600080fd5b505afa15801562001996573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff86106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001a0457600080fd5b505afa15801562001a19573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062001a4690508486620087f2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b15801562001a9657600080fd5b505afa15801562001aab573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801562001b1657600080fd5b505af115801562001b2b573d6000803e3d6000fd5b505050506000604051806101a0016040528062001b6a7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b0316815260200162001ba57f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e08201526101000162001c08600368056bc75e2d63100000866012620046ed565b6001600160a01b0316815260200162001c2f600468056bc75e2d63100000866012620046ed565b6001600160a01b03168152602001600181526020018481525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363d05f306560e01b6040518060400160405280601281526020017f6f7261636c65207374616c65207072696365000000000000000000000000000081525060405160240162001ccc919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001d409160040162008808565b600060405180830381600087803b15801562001d5b57600080fd5b505af115801562001d70573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc49350911690600090819062001da79087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262001dfb9594939290600401620084f6565b61018060405180830381865afa15801562001e1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e4091906200858b565b5050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200191257838290600052602060002001805462001e8d906200825d565b80601f016020809104026020016040519081016040528092919081815260200182805462001ebb906200825d565b801562001f0c5780601f1062001ee05761010080835404028352916020019162001f0c565b820191906000526020600020905b81548152906001019060200180831162001eee57829003601f168201915b50505050508152602001906001019062001e6b565b6040517f4c63e562000000000000000000000000000000000000000000000000000000008152600085136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001f8857600080fd5b505afa15801562001f9d573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505060008713801562002001575062001ffd670de0b6b3a76400007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200832a565b8713155b6040518263ffffffff1660e01b815260040162002022911515815260200190565b60006040518083038186803b1580156200203b57600080fd5b505afa15801562002050573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600086136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620020bb57600080fd5b505afa158015620020d0573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291508590508662002107670de0b6b3a76400008a620083bd565b6200211391906200832a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529112600482015260240160006040518083038186803b1580156200216257600080fd5b505afa15801562002177573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528385116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620021e157600080fd5b505afa158015620021f6573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff85106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200226457600080fd5b505afa15801562002279573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b158015620022e457600080fd5b505af1158015620022f9573d6000803e3d6000fd5b505050506000604051806101a00160405280620023387f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620023737f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e082015261010001620023cd600389426012620046ed565b6001600160a01b03168152602001620023eb600488426012620046ed565b6001600160a01b031681526020018581526020018381525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363d05f306560e01b6040518060400160405280601281526020017f737472696b65206e6f742072656163686564000000000000000000000000000081525060405160240162002487919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620024fb9160040162008808565b600060405180830381600087803b1580156200251657600080fd5b505af11580156200252b573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc493509116906000908190620025629087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620025b69594939290600401620084f6565b61018060405180830381865afa158015620025d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025fb91906200858b565b50505050505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620019125760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620026ea57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620026965790505b5050505050815250508152602001906001019062002628565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526107086004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200276b57600080fd5b505af115801562002780573d6000803e3d6000fd5b505050506000604051806101a00160405280620027bf7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620027fa7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e0820152610100016200285d6003680ad78ebc5ac6200000426012620046ed565b6001600160a01b0316815260200162002884600468056bc75e2d63100000426012620046ed565b6001600160a01b031681526020016001815260200161038481525090506200291d603a60009054906101000a90046001600160a01b03166000801b83604051602001620028d291906200840f565b60408051601f19818403018152606080840183526000808552602085810191909152938301819052825190810183526001600160a01b03959095168552918401929092529082015290565b50604080518082018252601281527f737472696b65206e6f742072656163686564000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fd05f306500000000000000000000000000000000000000000000000000000000916200299f9160240162008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262002a139160040162008808565b600060405180830381600087803b15801562002a2e57600080fd5b505af115801562002a43573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc49350911690600090819062002a7a9087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262002ace9594939290600401620084f6565b61018060405180830381865afa15801562002aed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b1391906200858b565b5050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200191257838290600052602060002001805462002b5d906200825d565b80601f016020809104026020016040519081016040528092919081815260200182805462002b8b906200825d565b801562002bdc5780601f1062002bb05761010080835404028352916020019162002bdc565b820191906000526020600020905b81548152906001019060200180831162002bbe57829003601f168201915b50505050508152602001906001019062002b3b565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000a20946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562002c6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c939190620082e1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562002cf5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d1b91906200881d565b6034546001600160a01b0316620048ee565b6060600183511162002dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c656166000000000000000000000000000000000000000000000000000000006064820152608401620008c8565b600062002dcf845162003864565b67ffffffffffffffff81111562002dea5762002dea62007d13565b60405190808252806020026020018201604052801562002e14578160200160208202803683370190505b50905060005b60018551111562002efb578360011660010362002e785784600185038151811062002e495762002e49620082b2565b602002602001015182828151811062002e665762002e66620082b2565b60200260200101818152505062002edf565b8451846001010362002e9d576000801b82828151811062002e665762002e66620082b2565b84846001018151811062002eb55762002eb5620082b2565b602002602001015182828151811062002ed25762002ed2620082b2565b6020026020010181815250505b60010160028404935062002ef3856200434f565b945062002e1a565b5090505b92915050565b60008054610100900460ff161562002f265750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200304c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162002fce917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200883d565b60408051601f198184030181529082905262002fea9162008887565b6000604051808303816000865af19150503d806000811462003029576040519150601f19603f3d011682016040523d82523d6000602084013e6200302e565b606091505b5091505080806020019051810190620030489190620088a5565b9150505b919050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff828116908416116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620030c057600080fd5b505afa158015620030d5573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815263ffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200314557600080fd5b505af11580156200315a573d6000803e3d6000fd5b505050506000604051806101a00160405280620031997f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620031d47f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff841660e08201526101000162003239600368056bc75e2d63100000426012620046ed565b6001600160a01b0316815260200162003260600468056bc75e2d63100000426012620046ed565b6001600160a01b031681526020016001815260200161038481525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363c8fc272560e01b6040518060400160405280600d81526020017f6f72646572206578706972656400000000000000000000000000000000000000815250604051602401620032ff919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620033739160040162008808565b600060405180830381600087803b1580156200338e57600080fd5b505af1158015620033a3573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc493509116906000908190620033da9087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200342e9594939290600401620084f6565b61018060405180830381865afa1580156200344d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200347391906200858b565b50505050565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620034e357600080fd5b505af1158015620034f8573d6000803e3d6000fd5b505050506000604051806101a00160405280620035377f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152602001620035727f00000000000000000000000000000000000000000000000000000000000000006006620045ed565b6001600160a01b03168152670de0b6b3a764000060208201526001604082018190526000606083018190526080830181905260a083019190915260c082015263ffffffff60e082015261010001620035d46003642ab66d2e97426008620046ed565b6001600160a01b03168152602001620035f660046305f5e100426008620046ed565b6001600160a01b0390811682526866ffcbfd5e5a300000602080840191909152610384604093840152603a54603b5493519495506000949083169363b8296fc4931691859182916200364b918991016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200369f9594939290600401620084f6565b61018060405180830381865afa158015620036be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036e491906200858b565b90506200371681600001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200374681602001517f0000000000000000000000000000000000000000000000000000000000000000620048ee565b6200375e8160600151670de0b6b3a764000062004a00565b6200376f8160800151600162004a00565b6200378081604001516000620048ee565b6200379c8160a0015163ffffffff1663ffffffff801662004a00565b60c0810151620037ae906000620044db565b620037bf8160e00151600062004a00565b620037f08161010001517ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775620044db565b62003802816101200151600062004b00565b620038338161014001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b62002b138161016001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9620044db565b6000600182116200387757506000919050565b6000827001000000000000000000000000000000008110620038a857608093841c93620038a59083620088c3565b91505b680100000000000000008410620038ce57604093841c93620038cb9083620088c3565b91505b6401000000008410620038f057602093841c93620038ed9083620088c3565b91505b6201000084106200391057601093841c936200390d9083620088c3565b91505b61010084106200392f57600893841c936200392c9083620088c3565b91505b601084106200394d57600493841c936200394a9083620088c3565b91505b600484106200396b57600293841c93620039689083620088c3565b91505b60028410620039845762003981600183620088c3565b91505b6000816200399581196001620088c3565b1690508181148015620039a85750600083115b15620039b75750909392505050565b620039c4836001620088c3565b95945050505050565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815260008313156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003a3557600080fd5b505afa15801562003a4a573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152600084136004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003ab557600080fd5b505afa15801562003aca573d6000803e3d6000fd5b50506040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526107086004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801562003b3657600080fd5b505af115801562003b4b573d6000803e3d6000fd5b505050506000604051806101a0016040528062003b8a7f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b0316815260200162003bc57f00000000000000000000000000000000000000000000000000000000000000006012620045ed565b6001600160a01b03168152670de0b6b3a76400006020820181905260408201526000606082018190526080820181905260a0820181905260c082015263ffffffff60e08201526101000162003c1f600386426012620046ed565b6001600160a01b0316815260200162003c3d600485426012620046ed565b6001600160a01b031681526020016001815260200161038481525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb363c8fc272560e01b6040518060400160405280601481526020017f6f7261636c6520696e76616c696420707269636500000000000000000000000081525060405160240162003cdc919062008808565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262003d509160040162008808565b600060405180830381600087803b15801562003d6b57600080fd5b505af115801562003d80573d6000803e3d6000fd5b5050603a54603b546040516001600160a01b03928316945063b8296fc49350911690600090819062003db79087906020016200840f565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262003e0b9594939290600401620084f6565b61018060405180830381865afa15801562003e2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e5091906200858b565b5062003e61600383426012620046ed565b6001600160a01b031661012082015262003e80600484426012620046ed565b6001600160a01b0316610140820152604080518082018252601481527f6f7261636c6520696e76616c696420707269636500000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620032ff9160240162008808565b6000818310801562003f2a57836000528260205262003f33565b82600052836020525b5050604060002092915050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200082e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200080f575050505050905090565b6000808219600101831683145b831562003fc757600193841c93919091019062003faf565b900392915050565b62003fd962004cf4565b6025546040516001600160a01b039091169062003ff69062007b89565b6001600160a01b039091168152602001604051809103906000f08015801562004023573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da250000000000000000000000000000000000000000000000000000000081529051620041ab94938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa158015620040e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200410a9190620082e1565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062004194620050b9565b6031546001600160a01b0316949392919062005193565b604051620041b99062007b97565b604051809103906000f080158015620041d6573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200421d9062007ba5565b604051809103906000f0801580156200423a573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620042819062007bb3565b604051809103906000f0801580156200429e573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603454604051911690620042e79062007bc1565b6001600160a01b039091168152602001604051809103906000f08015801562004314573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606080600083519050806001166001036200440c576002810460010167ffffffffffffffff81111562004386576200438662007d13565b604051908082528060200260200182016040528015620043b0578160200160208202803683370190505b509150620043e1846001830381518110620043cf57620043cf620082b2565b60200260200101516000801b62003f10565b82600184510381518110620043fa57620043fa620082b2565b60200260200101818152505062004459565b6002810467ffffffffffffffff8111156200442b576200442b62007d13565b60405190808252806020026020018201604052801562004455578160200160208202803683370190505b5091505b6000805b60018303811015620044d157620044a2868281518110620044825762004482620082b2565b6020026020010151878360010181518110620011d857620011d8620082b2565b848381518110620044b757620044b7620082b2565b60209081029190910101526001909101906002016200445d565b5091949350505050565b80821462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045699060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620045a29190620088d9565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620045db919062008925565b60405180910390a162002b13620053c6565b6040805160048152602481018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000179052825160ff85168183015283518082039092018252808401938490527fb96213e4000000000000000000000000000000000000000000000000000000009093528492737109709ecfa91a80626ff3989d68f67f5b1dd12d9263b96213e492620046b3928692919060440162008963565b600060405180830381600087803b158015620046ce57600080fd5b505af1158015620046e3573d6000803e3d6000fd5b5050505092915050565b6040805160048152602481018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ffeaf968c0000000000000000000000000000000000000000000000000000000017905282516000918101829052928301869052606083018190526080830185905260a08301528591737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b96213e49184919060c0016040516020818303038152906040526040518463ffffffff1660e01b8152600401620047ba9392919062008963565b600060405180830381600087803b158015620047d557600080fd5b505af1158015620047ea573d6000803e3d6000fd5b50506040805160048152602481018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000179052825160ff88168183015283518082039092018252808401938490527fb96213e400000000000000000000000000000000000000000000000000000000909352737109709ecfa91a80626ff3989d68f67f5b1dd12d945063b96213e49350620048b2928a92919060440162008963565b600060405180830381600087803b158015620048cd57600080fd5b505af1158015620048e2573d6000803e3d6000fd5b50505050949350505050565b806001600160a01b0316826001600160a01b03161462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200498e9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620049c79190620089a5565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620045db9190620089fa565b80821462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a8e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004ac79190620088d9565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620045db919062008925565b8015158215151462002b13577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004b929060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262004bfd576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062004c34565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162004c43919062008a38565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162004cae576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062004ce5565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620045db919062008a8a565b62004cfe6200550d565b62004d3e6040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062005969565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f6200000000000000000000000000000000000000000000000000000000009181019190915262004dc19062005969565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c0000000000000000000000000000000000000000000000000000009181019190915262004e449062005969565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462004ea3929182169116683635c9adc5dea0000062005aef565b602254602d5462004ecb916001600160a01b039081169116683635c9adc5dea0000062005aef565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b03169183915060009062004f115762004f11620082b2565b6001600160a01b039283166020918202929092010152602d5482519116908290600190811062004f455762004f45620082b2565b6001600160a01b039283166020918202929092010152602f5482519116908290600290811062004f795762004f79620082b2565b6001600160a01b039283166020918202929092010152601c54601b54601e5462004fb3939283169291821691859160029116600062005b03565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200500b939283169291821691859160029116600162005b03565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620050629392831692918216918591600291168162005b03565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602154603154620050b6929182169116683635c9adc5dea0000062005aef565b50565b604080516002808252606082810190935260009190816020015b6040805180820190915260008082526020820152815260200190600190039081620050d357505060408051808201909152602b546001600160a01b03168152602c5460208201528151919250908290600090620051345762005134620082b2565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e54918101919091528151829060019081106200517d576200517d620082b2565b602002602001018190525062002eff8162005c07565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620051d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051fa9190620082e1565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620052419a9998979695949392919062008b04565b602060405180830381865afa1580156200525f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052859190620082e1565b9050620052928362005c07565b9250606060005b84518110156200530f5781620052d584878481518110620052be57620052be620082b2565b602002602001015162005d4090919063ffffffff16565b604051602001620052e892919062008b7b565b60405160208183030381529060405291508080620053069062008bae565b91505062005299565b50886001600160a01b0316636a7612028989898960008060008060008b6040516020016200533e919062008887565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620053749a9998979695949392919062008be9565b6020604051808303816000875af115801562005394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053ba9190620088a5565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620054df5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200547a92916020016200883d565b60408051601f1981840301815290829052620054969162008887565b6000604051808303816000865af19150503d8060008114620054d5576040519150601f19603f3d011682016040523d82523d6000602084013e620054da565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6200554d6040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062005969565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620055d09062005969565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c74000000000000000000000000000000000000000000000091810191909152620056539062005e6a565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516000906200569c9062007bcf565b604051809103906000f080158015620056b9573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b1580156200571d57600080fd5b505af115801562005732573d6000803e3d6000fd5b50506024546040518493506001600160a01b039091169150620057559062007bdd565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562005789573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562005816573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200583c91906200881d565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620058da57600080fd5b505af1158015620058ef573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200595457600080fd5b505af115801562001e40573d6000803e3d6000fd5b604080518082019091526000808252602082015260008260405160200162005992919062008887565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562005a17573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a3d91906200881d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062005a94908490889060040162008c70565b600060405180830381600087803b15801562005aaf57600080fd5b505af115801562005ac4573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b62005afe838383600062005e7e565b505050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b8888600089600080600060405160240162005b3f979695949392919062008c94565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825262005bb69291879060040162008cfe565b6020604051808303816000875af115801562005bd6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bfc91906200881d565b979650505050505050565b606060005b825181101562005d3957600062005c25826001620088c3565b90505b835181101562005d235783818151811062005c475762005c47620082b2565b6020026020010151600001516001600160a01b031684838151811062005c715762005c71620082b2565b6020026020010151600001516001600160a01b0316111562005d0e57600084838151811062005ca45762005ca4620082b2565b6020026020010151905084828151811062005cc35762005cc3620082b2565b602002602001015185848151811062005ce05762005ce0620082b2565b60200260200101819052508085838151811062005d015762005d01620082b2565b6020026020010181905250505b8062005d1a8162008bae565b91505062005c28565b508062005d308162008bae565b91505062005c0c565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562005dc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005de7919062008d32565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b600062005e778262006115565b5092915050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162005f029162008887565b6000604051808303816000865af19150503d806000811462005f41576040519150601f19603f3d011682016040523d82523d6000602084013e62005f46565b606091505b5091505060008180602001905181019062005f629190620082e1565b905062005fb58462005fae8762005fa77f70a082310000000000000000000000000000000000000000000000000000000062005fa060058d62006263565b90620062a3565b90620062dc565b9062006305565b8215620011a45760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b038916916200602e919062008887565b6000604051808303816000865af19150503d80600081146200606d576040519150601f19603f3d011682016040523d82523d6000602084013e62006072565b606091505b509150506000818060200190518101906200608e9190620082e1565b905082861015620060b957620060a58684620087f2565b620060b19082620087f2565b9050620060d4565b620060c58387620087f2565b620060d19082620088c3565b90505b6200610b8162005fae7f18160ddd0000000000000000000000000000000000000000000000000000000062005fa060058d62006263565b5050505050505050565b600080826040516020016200612b919062008887565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620061ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061d391906200881d565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200622a908590879060040162008c70565b600060405180830381600087803b1580156200624557600080fd5b505af11580156200625a573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200629c565b6002820180546001810182556000918252602082206001600160a01b038416910155826200629c565b62002b138282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200637e57602002820191906000526020600020905b81548152602001906001019080831162006369575b505050505090506000836200639383620067df565b604051602001620063a69291906200883d565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a1683528152928120919450909290916200641291869188910162008d6c565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200644d576200644b876200688c565b505b6001600160a01b0385166000908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905190918391620064a691879189910162008d6c565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620064ed919062008887565b600060405180830381855afa9150503d80600081146200652a576040519150601f19603f3d011682016040523d82523d6000602084013e6200652f565b606091505b5091506200654c90508162006546886020620087a0565b62006899565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620065cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065f29190620082e1565b9050808214620066d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620008c8565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b1580156200674e57600080fd5b505af115801562006763573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620067cb60028b01600062007beb565b896004016000905550505050505050505050565b6060600082516020620067f39190620087a0565b67ffffffffffffffff8111156200680e576200680e62007d13565b6040519080825280601f01601f19166020018201604052801562006839576020820181803683370190505b50905060005b835181101562005e77576000848281518110620068605762006860620082b2565b602002602001015190508082602002602001840152508080620068839062008bae565b9150506200683f565b600062002eff826200693b565b60008060006020855111620068b0578451620068b3565b60205b905060005b818110156200693157620068ce816008620087a0565b86620068db8388620088c3565b81518110620068ee57620068ee620082b2565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620069288162008bae565b915050620068b8565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620069ad57602002820191906000526020600020905b81548152602001906001019080831162006998575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519596509491935062006a119250859187910162008d6c565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562006ac8576001600160a01b0384166000908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162006a9891859187910162008d6c565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362006ad68362007a36565b60405160200162006ae99291906200883d565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562006b5957600080fd5b505af115801562006b6e573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162006b8f919062008887565b600060405180830381855afa9150503d806000811462006bcc576040519150601f19603f3d011682016040523d82523d6000602084013e62006bd1565b606091505b50915062006bee90508162006be8876020620087a0565b62007ae3565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562006c69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006c93919081019062008e0a565b5090508051600103620070c55760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062006ceb5762006ceb620082b2565b60200260200101516040518363ffffffff1660e01b815260040162006d259291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006d699190620082e1565b90508062006dd4577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062006da95762006da9620082b2565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462006eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620008c8565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162006ee992919062008d6c565b604051602081830303815290604052805190602001208560008151811062006f155762006f15620082b2565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062006f875762006f87620082b2565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262006fea918a918c910162008d6c565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c168552825282842092519093916200706c918a918c910162008d6c565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200782e565b600181511115620077a35760005b81518110156200779c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620071275762007127620082b2565b60200260200101516040518363ffffffff1660e01b8152600401620071619291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200717f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071a59190620082e1565b9050806200720f577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620071e457620071e4620082b2565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a858581518110620072575762007257620082b2565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b158015620072e757600080fd5b505af1158015620072fc573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200731e919062008887565b600060405180830381855afa9150503d80600081146200735b576040519150601f19603f3d011682016040523d82523d6000602084013e62007360565b606091505b509092509050620073788162006be88b6020620087a0565b9550818015620073a757507f133700000000000000000000000000000000000000000000000000000000000086145b15620076b1577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620073e592919062008d6c565b60405160208183030381529060405280519060200120888881518110620074105762007410620082b2565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1848481518110620074815762007481620082b2565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f1683528452808220905192939092620074e4918d918f910162008d6c565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c6040516020016200759b92919062008d6c565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200761e576200761e620082b2565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200768f57600080fd5b505af1158015620076a4573d6000803e3d6000fd5b505050505050506200779c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620076f957620076f9620082b2565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200776a57600080fd5b505af11580156200777f573d6000803e3d6000fd5b505050505050508080620077939062008bae565b915050620070d3565b506200782e565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620008c8565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200788a9188918a910162008d6c565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620008c8565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620079a560028a01600062007beb565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905190929162007a039188918a910162008d6c565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062007a4a9190620087a0565b67ffffffffffffffff81111562007a655762007a6562007d13565b6040519080825280601f01601f19166020018201604052801562007a90576020820181803683370190505b50905060005b835181101562005e7757600084828151811062007ab75762007ab7620082b2565b60200260200101519050808260200260200184015250808062007ada9062008bae565b91505062007a96565b6000806000602085511162007afa57845162007afd565b60205b905060005b81811015620069315762007b18816008620087a0565b8662007b258388620088c3565b8151811062007b385762007b38620082b2565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062007b728162008bae565b91505062007b02565b6110c38062008e7683390190565b61237a8062009f3983390190565b61013c806200c2b383390190565b610809806200c3ef83390190565b610200806200cbf883390190565b611246806200cdf883390190565b610d06806200e03e83390190565b6153a2806200ed4483390190565b5080546000825590600052602060002090810190620050b691905b8082111562007c1c576000815560010162007c06565b5090565b60006020828403121562007c3357600080fd5b5035919050565b60005b8381101562007c5757818101518382015260200162007c3d565b50506000910152565b6000815180845262007c7a81602086016020860162007c3a565b601f01601f19169290920160200192915050565b6001600160a01b0384168152826020820152606060408201526000620039c4606083018462007c60565b600081518084526020808501945080840160005b8381101562007cf35781516001600160a01b03168752958201959082019060010162007ccc565b509495945050505050565b6020815260006200629c602083018462007cb8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562007d695762007d6962007d13565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562007d9b5762007d9b62007d13565b604052919050565b600067ffffffffffffffff82111562007dc05762007dc062007d13565b5060051b60200190565b600082601f83011262007ddc57600080fd5b8135602062007df562007def8362007da3565b62007d6f565b82815260059290921b8401810191818101908684111562007e1557600080fd5b8286015b8481101562007e32578035835291830191830162007e19565b509695505050505050565b60006020828403121562007e5057600080fd5b813567ffffffffffffffff81111562007e6857600080fd5b62007e768482850162007dca565b949350505050565b63ffffffff81168114620050b657600080fd5b6000806000806080858703121562007ea857600080fd5b843593506020850135925060408501359150606085013562007eca8162007e7e565b939692955090935050565b60008060006060848603121562007eeb57600080fd5b83359250602084013567ffffffffffffffff81111562007f0a57600080fd5b62007f188682870162007dca565b925050604084013590509250925092565b60ff81168114620050b657600080fd5b6000806000806080858703121562007f5057600080fd5b843562007f5d8162007f29565b9350602085013562007f6f8162007f29565b9250604085013562007f818162007f29565b9150606085013562007eca8162007f29565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008071578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200805b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062008017565b50978a0197955050509187019160010162007fbb565b50919998505050505050505050565b6000806000606084860312156200809657600080fd5b505081359360208301359350604090920135919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008124577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200811185835162007c60565b94509285019290850190600101620080d4565b5092979650505050505050565b600080600080600060a086880312156200814a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156200818157600080fd5b823567ffffffffffffffff8111156200819957600080fd5b620081a78582860162007dca565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b81811015620081f057835183529284019291840191600101620081d2565b50909695505050505050565b600080604083850312156200821057600080fd5b82356200821d8162007e7e565b915060208301356200822f8162007e7e565b809150509250929050565b600080604083850312156200824e57600080fd5b50508035926020909101359150565b600181811c908216806200827257607f821691505b602082108103620082ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215620082f457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262008361577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615620083b857620083b8620082fb565b500590565b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615620083f857620083f8620082fb565b818105831482151762002eff5762002eff620082fb565b81516001600160a01b031681526101a0810160208301516200843c60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a08301516200847660a08401826001600160a01b03169052565b5060c08301516200848b60c084018215159052565b5060e0830151620084a060e084018215159052565b506101008381015163ffffffff1690830152610120808401516001600160a01b03908116918401919091526101408085015190911690830152610160808401519083015261018092830151929091019190915290565b60006001600160a01b03808816835280871660208401525084604083015260a060608301526200852a60a083018562007c60565b82810360808401526200853e818562007c60565b98975050505050505050565b6001600160a01b0381168114620050b657600080fd5b80516200304c816200854a565b80516200304c8162007e7e565b805180151581146200304c57600080fd5b600061018082840312156200859f57600080fd5b620085a962007d42565b620085b48362008560565b8152620085c46020840162008560565b6020820152620085d76040840162008560565b60408201526060830151606082015260808301516080820152620085fe60a084016200856d565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120620086338185016200857a565b908201526101408381015190820152610160928301519281019290925250919050565b600181815b80851115620086b557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620086995762008699620082fb565b80851615620086a757918102915b93841c93908002906200865b565b509250929050565b600082620086ce5750600162002eff565b81620086dd5750600062002eff565b8160018114620086f65760028114620087015762008721565b600191505062002eff565b60ff841115620087155762008715620082fb565b50506001821b62002eff565b5060208310610133831016604e8410600b841016171562008746575081810a62002eff565b62008752838362008656565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620087875762008787620082fb565b029392505050565b60006200629c60ff841683620086bd565b808202811582820484141762002eff5762002eff620082fb565b60ff828116828216039081111562002eff5762002eff620082fb565b60ff818116838216019081111562002eff5762002eff620082fb565b8181038181111562002eff5762002eff620082fb565b6020815260006200629c602083018462007c60565b6000602082840312156200883057600080fd5b81516200629c816200854a565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200887981600485016020870162007c3a565b919091016004019392505050565b600082516200889b81846020870162007c3a565b9190910192915050565b600060208284031215620088b857600080fd5b6200629c826200857a565b8082018082111562002eff5762002eff620082fb565b6040815260006200891760408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200891760408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6001600160a01b038416815260606020820152600062008987606083018562007c60565b82810360408401526200899b818562007c60565b9695505050505050565b604081526000620089e360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620089e360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062008a7660408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b828103602084015262007e76818562007c60565b60408152600062008a7660408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6002811062008b00577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262008b308285018d62007c60565b925062008b41606085018c62008ac8565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b6000835162008b8f81846020880162007c3a565b83519083019062008ba581836020880162007c3a565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362008be25762008be2620082fb565b5060010190565b60006101406001600160a01b03808e1684528c602085015281604085015262008c158285018d62007c60565b915062008c26606085018c62008ac8565b8960808501528860a08501528760c085015280871660e08501528086166101008501525082810361012084015262008c5f818562007c60565b9d9c50505050505050505050505050565b6001600160a01b038316815260406020820152600062007e76604083018462007c60565b600061010080835262008caa8184018b62007cb8565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b038416815260606020820152600062008d22606083018562007c60565b9050826040830152949350505050565b60008060006060848603121562008d4857600080fd5b835162008d558162007f29565b602085015160409095015190969495509392505050565b825160009082906020808701845b8381101562008d985781518552938201939082019060010162008d7a565b5050948252509092019392505050565b600082601f83011262008dba57600080fd5b8151602062008dcd62007def8362007da3565b82815260059290921b8401810191818101908684111562008ded57600080fd5b8286015b8481101562007e32578051835291830191830162008df1565b6000806040838503121562008e1e57600080fd5b825167ffffffffffffffff8082111562008e3757600080fd5b62008e458683870162008da8565b9350602085015191508082111562008e5c57600080fd5b5062008e6b8582860162008da8565b915050925092905056fe608060405234801561001057600080fd5b506110a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610885565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610945565b61013c565b005b610096610091366004610a33565b610259565b6040516100659190610ad2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610ca1565b90504281610100015163ffffffff16101561034057604080518082018252600d81527f6f72646572206578706972656400000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60008082610120015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b79190610d98565b5093505092505060008084610140015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104359190610d98565b5093505092505060008413801561044c5750600082135b6104b557604080518082018252601481527f6f7261636c6520696e76616c6964207072696365000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6101808501516104c59042610e17565b83101580156104e357506101808501516104df9042610e17565b8110155b61054c57604080518082018252601281527f6f7261636c65207374616c652070726963650000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6105cb8486610120015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c49190610e2a565b6012610812565b93506106218286610140015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b6101608601519092508261063d670de0b6b3a764000087610e4d565b6106479190610e99565b13156106b257604080518082018252601281527f737472696b65206e6f7420726561636865640000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b50505050604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001826040015181526020018260600151815260200182610100015163ffffffff16815260200182608001518152602001600081526020018260c00151610787577f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc6107a9565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467755b81526020018260e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9815250915050979650505050505050565b60008160ff168360ff16101561084b5761082c8383610f28565b61083a9060ff16600a611061565b6108449085610e4d565b905061087e565b8160ff168360ff16111561087b576108638284610f28565b6108719060ff16600a611061565b6108449085610e99565b50825b9392505050565b60006020828403121561089757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461087e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108e957600080fd5b50565b80356108f7816108c7565b919050565b60008083601f84011261090e57600080fd5b50813567ffffffffffffffff81111561092657600080fd5b60208301915083602082850101111561093e57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561096557600080fd5b61096f8b356108c7565b8a35995060208b0135610981816108c7565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156109b357600080fd5b6109bf8e838f016108fc565b909750955060c08d01359150808211156109d857600080fd5b506109e58d828e016108fc565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610a1e57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a4e57600080fd5b8735610a59816108c7565b96506020880135610a69816108c7565b955060408801359450606088013567ffffffffffffffff80821115610a8d57600080fd5b610a998b838c016108fc565b909650945060808a0135915080821115610ab257600080fd5b50610abf8a828b016108fc565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610b18602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b40604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b6c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610ba18285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bed57858101830151858201604001528201610bd1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6040516101a0810167ffffffffffffffff81118282101715610c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803580151581146108f757600080fd5b803563ffffffff811681146108f757600080fd5b60006101a08284031215610cb457600080fd5b610cbc610c2c565b610cc5836108ec565b8152610cd3602084016108ec565b6020820152604083013560408201526060830135606082015260808301356080820152610d0260a084016108ec565b60a0820152610d1360c08401610c7d565b60c0820152610d2460e08401610c7d565b60e0820152610100610d37818501610c8d565b90820152610120610d498482016108ec565b90820152610140610d5b8482016108ec565b908201526101608381013590820152610180928301359281019290925250919050565b805169ffffffffffffffffffff811681146108f757600080fd5b600080600080600060a08688031215610db057600080fd5b610db986610d7e565b9450602086015193506040860151925060608601519150610ddc60808701610d7e565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610de8565b600060208284031215610e3c57600080fd5b815160ff8116811461087e57600080fd5b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615610e8557610e85610de8565b818105831482151761013657610136610de8565b600082610ecf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610f2357610f23610de8565b500590565b60ff828116828216039081111561013657610136610de8565b600181815b80851115610f9a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f8057610f80610de8565b80851615610f8d57918102915b93841c9390800290610f46565b509250929050565b600082610fb157506001610136565b81610fbe57506000610136565b8160018114610fd45760028114610fde57610ffa565b6001915050610136565b60ff841115610fef57610fef610de8565b50506001821b610136565b5060208310610133831016604e8410600b841016171561101d575081810a610136565b6110278383610f41565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105957611059610de8565b029392505050565b600061087e8383610fa256fea26469706673582212209b320a2b5454b0ecefde7c01c2b8ff316ef7bd8175de6191fe74ea73da2d6d4064736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a2646970667358221220e92f39f1391050fcdf538b5f78e4aeb2aa1cc09419a3891a194b5df2f5559ef964736f6c63430008130033","sourceMap":"388:15407:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:130;;;:::i;:::-;;595:17:106;;;;;-1:-1:-1;;;;;595:17:106;;;;;;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;595:17:106;;;;;;;;748:20:117;;;;;-1:-1:-1;;;;;748:20:117;;;1586:74:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2161:134:33:-;;;:::i;:::-;;;;;;;:::i;800:20:117:-;;;;;-1:-1:-1;;;;;800:20:117;;;1025:26:116;;;;;-1:-1:-1;;;;;1025:26:116;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;5009:25:122;;;4997:2;4982:18;987:253:45;4863:177:122;3024:158:107;;;:::i;2930:133:33:-;;;:::i;2631:141::-;;;:::i;13748:2045:111:-;;;;;;:::i;:::-;;:::i;1125:32:115:-;;;;;-1:-1:-1;;;;;1125:32:115;;;452:451:45;;;;;;:::i;:::-;;:::i;:::-;;;6635:14:122;;6628:22;6610:41;;6598:2;6583:18;452:451:45;6470:187:122;4592:2861:111;;;;;;:::i;:::-;;:::i;2447:178:33:-;;;:::i;:::-;;;;;;;:::i;9307:1456:111:-;;;;;;:::i;:::-;;:::i;572:17:106:-;;;;;-1:-1:-1;;;;;572:17:106;;;1232:22:115;;;;;-1:-1:-1;;;;;1232:22:115;;;2301:140:33;;;:::i;:::-;;;;;;;:::i;2923:1663:111:-;;;;;;:::i;:::-;;:::i;2778:146:33:-;;;:::i;1719:1198:111:-;;;:::i;978:41:116:-;;;;;-1:-1:-1;;;;;978:41:116;;;549:17:106;;;;;-1:-1:-1;;;;;549:17:106;;;1866:141:33;;;:::i;865:21:116:-;;;;;-1:-1:-1;;;;;865:21:116;;;2744:190:107;;;:::i;1246:1168:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;12469:1273:111:-;;;;;;:::i;:::-;;:::i;892:31:116:-;;;;;-1:-1:-1;;;;;892:31:116;;;7459:1842:111;;;:::i;929:43:116:-;;;;;-1:-1:-1;;;;;929:43:116;;;5179:952:45;;;;;;:::i;:::-;;:::i;774:20:117:-;;;;;-1:-1:-1;;;;;774:20:117;;;10769:1694:111;;;;;;:::i;:::-;;:::i;407:409:44:-;;;;;;:::i;:::-;;:::i;1057:36:116:-;;;;;-1:-1:-1;;;;;1057:36:116;;;2013:142:33;;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;1572:26:26:-;;;;;;;;;1100:19:115;;;;;-1:-1:-1;;;;;1100:19:115;;;794:130:111;868:13;:11;:13::i;:::-;903:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:8:111;:25;;;;-1:-1:-1;;;;;892:25:111;;;;;;;;;;794:130::o;1586:74:107:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:134:33:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:33;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;987:253:45:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;15272:2:122;1067:63:45;;;15254:21:122;15311:2;15291:18;;;15284:30;15350:34;15330:18;;;15323:62;15421:5;15401:18;;;15394:33;15444:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:107:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:107;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:107;-1:-1:-1;;;;;3146:26:107;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;:::-;3024:158::o;2930:133:33:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:33;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:33;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;13748:2045:111:-;13958:19;;;;;13966:10;13958:19;;;5009:25:122;13958:7:111;;;;4982:18:122;;13958:19:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13988:37:111;;;;;14009:15;13998:26;;;;;13988:37;;;6610:41:122;13988:9:111;;-1:-1:-1;13988:9:111;;-1:-1:-1;6583:18:122;;13988:37:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14035:34:111;;;;;309:37:27;14045:23:111;;14035:34;;;6610:41:122;14035:9:111;;-1:-1:-1;14035:9:111;;-1:-1:-1;6583:18:122;;14035:34:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14079:9:111;;-1:-1:-1;14079:9:111;;-1:-1:-1;;309:37:27;14089:24:111;;:79;;;;-1:-1:-1;14141:27:111;14160:8;14141:16;:27;:::i;:::-;14117:20;:51;;14089:79;14079:90;;;;;;;;;;;;;6635:14:122;6628:22;6610:41;;6598:2;6583:18;;6470:187;14079:90:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14179:21:111;;;;;309:37:27;14189:10:111;;14179:21;;;6610:41:122;14179:9:111;;-1:-1:-1;14179:9:111;;-1:-1:-1;6583:18:122;;14179:21:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14210:9:111;;-1:-1:-1;14210:9:111;;-1:-1:-1;14285:6:111;;-1:-1:-1;14262:19:111;14220:39;14250:8;14220:20;:39;:::i;:::-;:61;;;;:::i;:::-;14210:82;;;;;;;;;;14220:71;-1:-1:-1;14220:71:111;14210:82;;;6610:41:122;6583:18;;14210:82:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14303:25;14331:696;;;;;;;;14370:39;14380:10;743:2;14370:9;:39::i;:::-;-1:-1:-1;;;;;14331:696:111;;;;;14433:38;14443:9;743:2;14433:9;:38::i;:::-;-1:-1:-1;;;;;14331:696:111;;;14754:7;14331:696;;;;;;;;;;-1:-1:-1;14331:696:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14507:80;604:3;14531:20;14553:15;743:2;14507:10;:80::i;:::-;-1:-1:-1;;;;;14331:696:111;;;;;14622:78;652:3;14645:19;14666:15;743:2;14622:10;:78::i;:::-;-1:-1:-1;;;;;14331:696:111;;;;;;;;;;;;15006:10;14331:696;;;;;15080:8;;15107:4;;15137:16;;14303:724;;-1:-1:-1;;;15080:8:111;;;;:26;;15107:4;;-1:-1:-1;;;;15137:16:111;;14303:724;;15137:16;;:::i;:::-;;;;-1:-1:-1;;15137:16:111;;;;;;;15155:9;;;;-1:-1:-1;15155:9:111;;15080:85;;;;;;;;;;;;;;;15137:16;15080:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15038:127;;15175:55;15192:5;:15;;;15218:10;15175:8;:55::i;:::-;15240:53;15257:5;:14;;;15282:9;15240:8;:53::i;:::-;15303:35;15312:5;:16;;;15330:7;15303:8;:35::i;:::-;15348:34;15357:5;:15;;;15374:7;15348:8;:34::i;:::-;15392:38;15401:5;:14;;;15425:3;15392:8;:38::i;:::-;15440:32;15449:5;:13;;;15440:32;;15464:7;15440:32;;:8;:32::i;:::-;15491:13;;;;15482:33;;698:3;15482:8;:33::i;:::-;15525:28;15534:5;:15;;;15551:1;15525:8;:28::i;:::-;15563:40;15572:5;:10;;;15584:18;15563:8;:40::i;:::-;15613;15622:5;:23;;;15647:5;15613:8;:40::i;:::-;15663:57;15672:5;:22;;;15696:23;15663:8;:57::i;:::-;15730:56;15739:5;:21;;;15762:23;15730:8;:56::i;:::-;13915:1878;;13748:2045;;;;:::o;452:451:45:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;;452:451;-1:-1:-1;;;452:451:45:o;4592:2861:111:-;5162:39;;;;;5198:2;5172:28;;;;;5162:39;;;6610:41:122;5162:9:111;;;;6583:18:122;;5162:39:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5211:38:111;;;;;5246:2;5221:27;;;;;5211:38;;;6610:41:122;5211:9:111;;-1:-1:-1;5211:9:111;;-1:-1:-1;6583:18:122;;5211:38:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5259:40:111;;;;;5296:2;5269:29;;;;;5259:40;;;6610:41:122;5259:9:111;;-1:-1:-1;5259:9:111;;-1:-1:-1;6583:18:122;;5259:40:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5309:39:111;;;;;5345:2;5319:28;;;;;5309:39;;;6610:41:122;5309:9:111;;-1:-1:-1;5309:9:111;;-1:-1:-1;6583:18:122;;5309:39:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5359:19:111;;;;;5367:10;5359:19;;;5009:25:122;5359:7:111;;-1:-1:-1;5359:7:111;;-1:-1:-1;4982:18:122;;5359:19:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5389:25;5417:1266;;;;;;;;5456:45;5466:10;5478:22;5456:9;:45::i;:::-;-1:-1:-1;;;;;5417:1266:111;;;;;5525:43;5535:9;5546:21;5525:9;:43::i;:::-;-1:-1:-1;;;;;5417:1266:111;;;6408:7;5417:1266;;;;6440:1;5417:1266;;;;;;-1:-1:-1;5417:1266:111;;;;;;;;;;;;;;;;;;;;;;;6602:16;5417:1266;;;;;;5604:143;604:3;5660:29;5666:23;5660:2;:29;:::i;:::-;5652:38;;:4;:38;:::i;:::-;5693:15;5710:23;5604:10;:143::i;:::-;-1:-1:-1;;;;;5417:1266:111;;;;;5782:137;652:3;5834:28;5840:22;5834:2;:28;:::i;:::-;5829:34;;:1;:34;:::i;:::-;5866:15;5883:22;5782:10;:137::i;:::-;-1:-1:-1;;;;;5417:1266:111;;;;;6043:21;6018:46;;:22;:46;;;:230;;6195:46;6219:22;6195:21;:46;:::i;:::-;:51;;6244:2;6195:51;:::i;:::-;6188:59;;:2;:59;:::i;:::-;6018:230;;;6103:46;6128:21;6103:22;:46;:::i;:::-;:51;;6152:2;6103:51;:::i;:::-;6096:59;;:2;:59;:::i;:::-;5965:305;;:4;:305;:::i;:::-;5417:1266;;6662:10;5417:1266;;;;;6736:8;;6763:4;;6793:16;;5389:1294;;-1:-1:-1;;;;;;;;6736:8:111;;;;:26;;6763:4;;;;-1:-1:-1;;;;6793:16:111;;5389:1294;;6793:16;;:::i;:::-;;;;-1:-1:-1;;6793:16:111;;;;;;;6811:9;;;;-1:-1:-1;6811:9:111;;6736:85;;;;;;;;;;;;;;;6793:16;6736:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:127;;6831:55;6848:5;:15;;;6874:10;6831:8;:55::i;:::-;6896:53;6913:5;:14;;;6938:9;6896:8;:53::i;:::-;6959:35;6968:5;:16;;;6986:7;6959:8;:35::i;:::-;7004:28;7013:5;:15;;;7030:1;7004:8;:28::i;:::-;7042:38;7051:5;:14;;;7075:3;7042:8;:38::i;:::-;7090:41;7099:5;:13;;;7090:41;;7114:16;7090:41;;:8;:41::i;:::-;7150:13;;;;7141:33;;698:3;7141:8;:33::i;:::-;7184:28;7193:5;:15;;;7210:1;7184:8;:28::i;:::-;7222:41;7231:5;:10;;;7243:19;7222:8;:41::i;2447:178:33:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;9307:1456:111:-;9511:53;;;;;9521:42;;;9511:53;;;6610:41:122;9511:9:111;;;;6583:18:122;;9511:53:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9574:41:111;;;;;9598:16;9584:30;;9574:41;;;6610::122;9574:9:111;;-1:-1:-1;9574:9:111;;-1:-1:-1;6583:18:122;;9574:41:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9656:9:111;;-1:-1:-1;9656:9:111;;-1:-1:-1;9679:42:111;;-1:-1:-1;9693:28:111;9679:11;:42;:::i;:::-;9656:67;;;;;;;;;;9666:56;;;9656:67;;;6610:41:122;6583:18;;9656:67:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9734:20:111;;;;;;;;5009:25:122;;;9734:7:111;;-1:-1:-1;9734:7:111;;-1:-1:-1;4982:18:122;;9734:20:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9765:25;9793:685;;;;;;;;9832:39;9842:10;743:2;9832:9;:39::i;:::-;-1:-1:-1;;;;;9793:685:111;;;;;9895:38;9905:9;743:2;9895:9;:38::i;:::-;-1:-1:-1;;;;;9793:685:111;;;10178:7;9793:685;;;;;;;;;;-1:-1:-1;9793:685:111;;;;;;;;;;;;;;;;;;;;;;10379:16;9793:685;;;;;;9969:63;604:3;9993:9;10004;743:2;9969:10;:63::i;:::-;-1:-1:-1;;;;;9793:685:111;;;;;10067:62;652:3;10090:9;10101;743:2;10067:10;:62::i;:::-;-1:-1:-1;;;;;9793:685:111;;;;;10151:1;9793:685;;;;10439:28;9793:685;;;9765:713;;317:28:27;309:37;;-1:-1:-1;;;;;10489:15:111;;10558:43;;;10619:18;;;;;;;;;;;;;;;;;10518:133;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10518:133:111;;;;;;;;;;;;;;;;;;;;;;;10489:172;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10671:8:111;;10698:4;;10728:16;;-1:-1:-1;;;;;10671:8:111;;;;-1:-1:-1;10671:26:111;;-1:-1:-1;10698:4:111;;;10671:8;;;;10728:16;;10739:4;;10728:16;;;:::i;:::-;;;;-1:-1:-1;;10728:16:111;;;;;;;10746:9;;;;-1:-1:-1;10746:9:111;;10671:85;;;;;;;;;;;;;;;10728:16;10671:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9466:1297;9307:1456;;;:::o;2301:140:33:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2923:1663:111;3141:34;;;;;309:37:27;3151:23:111;;3141:34;;;6610:41:122;3141:9:111;;;;6583:18:122;;3141:34:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3185:9:111;;-1:-1:-1;3185:9:111;;-1:-1:-1;;309:37:27;3195:24:111;;:79;;;;-1:-1:-1;3247:27:111;3266:8;3247:16;:27;:::i;:::-;3223:20;:51;;3195:79;3185:90;;;;;;;;;;;;;6635:14:122;6628:22;6610:41;;6598:2;6583:18;;6470:187;3185:90:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3285:21:111;;;;;309:37:27;3295:10:111;;3285:21;;;6610:41:122;3285:9:111;;-1:-1:-1;3285:9:111;;-1:-1:-1;6583:18:122;;3285:21:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3316:9:111;;-1:-1:-1;3316:9:111;;-1:-1:-1;3390:6:111;;-1:-1:-1;3368:19:111;3326:39;3356:8;3326:20;:39;:::i;:::-;:61;;;;:::i;:::-;3316:81;;;;;;;;;;3326:70;-1:-1:-1;3316:81:111;;;6610:41:122;6583:18;;3316:81:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3407:34:111;;;;;3417:23;;;3407:34;;;6610:41:122;3407:9:111;;-1:-1:-1;3407:9:111;;-1:-1:-1;6583:18:122;;3407:34:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3486:41:111;;;;;3510:16;3496:30;;3486:41;;;6610::122;3486:9:111;;-1:-1:-1;3486:9:111;;-1:-1:-1;6583:18:122;;3486:41:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3538:20:111;;;;;;;;5009:25:122;;;3538:7:111;;-1:-1:-1;3538:7:111;;-1:-1:-1;4982:18:122;;3538:20:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3569:25;3597:704;;;;;;;;3636:39;3646:10;743:2;3636:9;:39::i;:::-;-1:-1:-1;;;;;3597:704:111;;;;;3699:38;3709:9;743:2;3699:9;:38::i;:::-;-1:-1:-1;;;;;3597:704:111;;;4020:7;3597:704;;;;;;;;;;-1:-1:-1;3597:704:111;;;;;;;;;;;;;;;;;;;;;;4221:16;3597:704;;;;;;3773:80;604:3;3797:20;3819:15;743:2;3773:10;:80::i;:::-;-1:-1:-1;;;;;3597:704:111;;;;;3888:78;652:3;3911:19;3932:15;743:2;3888:10;:78::i;:::-;-1:-1:-1;;;;;3597:704:111;;;;;3988:6;3597:704;;;;4281:9;3597:704;;;3569:732;;317:28:27;309:37;;-1:-1:-1;;;;;4312:15:111;;4381:43;;;4442:18;;;;;;;;;;;;;;;;;4341:133;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4341:133:111;;;;;;;;;;;;;;;;;;;;;;;4312:172;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4494:8:111;;4521:4;;4551:16;;-1:-1:-1;;;;;4494:8:111;;;;-1:-1:-1;4494:26:111;;-1:-1:-1;4521:4:111;;;4494:8;;;;4551:16;;4562:4;;4551:16;;;:::i;:::-;;;;-1:-1:-1;;4551:16:111;;;;;;;4569:9;;;;-1:-1:-1;4569:9:111;;4494:85;;;;;;;;;;;;;;;4551:16;4494:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3131:1455;2923:1663;;;;;:::o;2778:146:33:-;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1719:1198:111;1840:19;;;;;1848:10;1840:19;;;5009:25:122;1840:7:111;;;;4982:18:122;;1840:19:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1870:25;1898:679;;;;;;;;1937:39;1947:10;743:2;1937:9;:39::i;:::-;-1:-1:-1;;;;;1898:679:111;;;;;2000:38;2010:9;743:2;2000:9;:38::i;:::-;-1:-1:-1;;;;;1898:679:111;;;2295:7;1898:679;;;;;;;;;;-1:-1:-1;1898:679:111;;;;;;;;;;;;;;;;;;;;;;2496:16;1898:679;;;;;;2074:69;604:3;2098:9;2109:15;743:2;2074:10;:69::i;:::-;-1:-1:-1;;;;;1898:679:111;;;;;2178:68;652:3;2201:9;2212:15;743:2;2178:10;:68::i;:::-;-1:-1:-1;;;;;1898:679:111;;;;;2268:1;1898:679;;;;2556:10;1898:679;;;1870:707;;2588:44;2600:8;;;;;;;;;-1:-1:-1;;;;;2600:8:111;2610:3;2588:44;;2626:4;2615:16;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2615:16:111;;;;;;-1:-1:-1;;;;;;;;;;2615:16:111;-1:-1:-1;;;;;;;;;;;;;7261:163:107;;;;;;;-1:-1:-1;;;;;7261:163:107;;;;;;;;;;;;;;;;;;7031:400;2588:44:111;-1:-1:-1;2773:18:111;;;;;;;;;;;;;;;;2672:133;;2643:15;;;;2712:43;;2672:133;;;;;:::i;:::-;;;;-1:-1:-1;;2672:133:111;;;;;;;;;;;;;;;;;;;;;;;2643:172;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2825:8:111;;2852:4;;2882:16;;-1:-1:-1;;;;;2825:8:111;;;;-1:-1:-1;2825:26:111;;-1:-1:-1;2852:4:111;;;2825:8;;;;2882:16;;2893:4;;2882:16;;;:::i;:::-;;;;-1:-1:-1;;2882:16:111;;;;;;;2900:9;;;;-1:-1:-1;2900:9:111;;2825:85;;;;;;;;;;;;;;;2882:16;2825:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1769:1148;1719:1198::o;1866:141:33:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:107;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:107;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;24262:55:122;;;2840:61:107;;;24244:74:122;24334:18;;;24327:34;24217:18;;2840:61:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:107;2823:8;:104::i;1246:1168:45:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;24870:2:122;1350:64:45;;;24852:21:122;24909:2;24889:18;;;24882:30;24948:34;24928:18;;;24921:62;25019:6;24999:18;;;24992:34;25043:19;;1350:64:45;24668:400:122;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;24244:74:122;;;2221:17:26;24334:18:122;;;24327:34;2196:43:26;;;;;;;;;24217:18:122;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;12469:1273:111:-;12623:32;;;;;12633:21;;;;;;;;12623:32;;;6610:41:122;12623:9:111;;;;6583:18:122;;12623:32:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12666:20:111;;;;;26484:10:122;26472:23;;12666:20:111;;;26454:42:122;12666:7:111;;-1:-1:-1;12666:7:111;;-1:-1:-1;26427:18:122;;12666:20:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12697:25;12725:670;;;;;;;;12764:39;12774:10;743:2;12764:9;:39::i;:::-;-1:-1:-1;;;;;12725:670:111;;;;;12827:38;12837:9;743:2;12827:9;:38::i;:::-;-1:-1:-1;;;;;12725:670:111;;;13122:7;12725:670;;;;;;;;;;-1:-1:-1;12725:670:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12901:69;604:3;12925:9;12936:15;743:2;12901:10;:69::i;:::-;-1:-1:-1;;;;;12725:670:111;;;;;13005:68;652:3;13028:9;13039:15;743:2;13005:10;:68::i;:::-;-1:-1:-1;;;;;12725:670:111;;;;;13095:1;12725:670;;;;13374:10;12725:670;;;12697:698;;317:28:27;309:37;;-1:-1:-1;;;;;13406:15:111;;13475:40;;;13533:13;;;;;;;;;;;;;;;;;13435:125;;;;;;;;:::i;:::-;;;;-1:-1:-1;;13435:125:111;;;;;;;;;;;;;;;;;;;;;;;13406:164;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13580:8:111;;13620:4;;13686:16;;-1:-1:-1;;;;;13580:8:111;;;;-1:-1:-1;13580:26:111;;-1:-1:-1;13620:4:111;;;13580:8;;;;13686:16;;13697:4;;13686:16;;;:::i;:::-;;;;-1:-1:-1;;13686:16:111;;;;;;;13716:9;;;;-1:-1:-1;13716:9:111;;13580:155;;;;;;;;;;;;;;;13686:16;13580:155;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12580:1162;12469:1273;;:::o;7459:1842::-;7556:19;;;;;7564:10;7556:19;;;5009:25:122;7556:7:111;;;;4982:18:122;;7556:19:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7586:25;7614:917;;;;;;;;7653:39;7663:10;743:2;7653:9;:39::i;:::-;-1:-1:-1;;;;;7614:917:111;;;;;7762:23;7772:9;7783:1;7762:9;:23::i;:::-;-1:-1:-1;;;;;7614:917:111;;;8256:7;7614:917;;;;8288:1;7614:917;;;;;;-1:-1:-1;7614:917:111;;;;;;;;;;;;;;;;;;;;;;;8450:16;7614:917;;;;;;7869:60;604:3;7893:15;7910;7927:1;7869:10;:60::i;:::-;-1:-1:-1;;;;;7614:917:111;;;;;8005:55;652:3;8028:11;8041:15;8058:1;8005:10;:55::i;:::-;-1:-1:-1;;;;;7614:917:111;;;;;8105:28;7614:917;;;;;;;;8510:10;7614:917;;;;;8584:8;;8611:4;;8641:16;;7586:945;;-1:-1:-1;;;8584:8:111;;;;:26;;8611:4;;-1:-1:-1;;;;8641:16:111;;7586:945;;8641:16;;:::i;:::-;;;;-1:-1:-1;;8641:16:111;;;;;;;8659:9;;;;-1:-1:-1;8659:9:111;;8584:85;;;;;;;;;;;;;;;8641:16;8584:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8542:127;;8679:55;8696:5;:15;;;8722:10;8679:8;:55::i;:::-;8744:53;8761:5;:14;;;8786:9;8744:8;:53::i;:::-;8807:35;8816:5;:16;;;8834:7;8807:8;:35::i;:::-;8852:28;8861:5;:15;;;8878:1;8852:8;:28::i;:::-;8890:38;8899:5;:14;;;8923:3;8890:8;:38::i;:::-;8938:41;8947:5;:13;;;8938:41;;8962:16;8938:41;;:8;:41::i;:::-;8998:13;;;;8989:33;;698:3;8989:8;:33::i;:::-;9032:28;9041:5;:15;;;9058:1;9032:8;:28::i;:::-;9070:41;9079:5;:10;;;9091:19;9070:8;:41::i;:::-;9121:40;9130:5;:23;;;9155:5;9121:8;:40::i;:::-;9171:57;9180:5;:22;;;9204:23;9171:8;:57::i;:::-;9238:56;9247:5;:21;;;9270:23;9238:8;:56::i;5179:952:45:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;10769:1694:111:-;10905:28;;;;;309:37:27;10915:17:111;;;10905:28;;;6610:41:122;10905:9:111;;;;6583:18:122;;10905:28:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10943:25:111;;;;;309:37:27;10953:14:111;;10943:25;;;6610:41:122;10943:9:111;;-1:-1:-1;10943:9:111;;-1:-1:-1;6583:18:122;;10943:25:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10979:19:111;;;;;10987:10;10979:19;;;5009:25:122;10979:7:111;;-1:-1:-1;10979:7:111;;-1:-1:-1;4982:18:122;;10979:19:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11060:25;11088:683;;;;;;;;11127:39;11137:10;743:2;11127:9;:39::i;:::-;-1:-1:-1;;;;;11088:683:111;;;;;11190:38;11200:9;743:2;11190:9;:38::i;:::-;-1:-1:-1;;;;;11088:683:111;;;11489:7;11088:683;;;;;;;;;;-1:-1:-1;11088:683:111;;;;;;;;;;;;;;;;;;;;;;11690:16;11088:683;;;;;;11264:72;604:3;11288:12;11302:15;743:2;11264:10;:72::i;:::-;-1:-1:-1;;;;;11088:683:111;;;;;11371:69;652:3;11394:10;11406:15;743:2;11371:10;:69::i;:::-;-1:-1:-1;;;;;11088:683:111;;;;;11462:1;11088:683;;;;11750:10;11088:683;;;11060:711;;317:28:27;309:37;;-1:-1:-1;;;;;11782:15:111;;11821:40;;;11863:20;;;;;;;;;;;;;;;;;11798:86;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11798:86:111;;;;;;;;;;;;;;;;;;;;;;;11782:103;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11895:8:111;;11922:4;;11952:16;;-1:-1:-1;;;;;11895:8:111;;;;-1:-1:-1;11895:26:111;;-1:-1:-1;11922:4:111;;;11895:8;;;;11952:16;;11963:4;;11952:16;;;:::i;:::-;;;;-1:-1:-1;;11952:16:111;;;;;;;11970:9;;;;-1:-1:-1;11970:9:111;;11895:85;;;;;;;;;;;;;;;11952:16;11895:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12069:70;604:3;12093:10;12105:15;743:2;12069:10;:70::i;:::-;-1:-1:-1;;;;;12041:98:111;:25;;;:98;12176:71;652:3;12199:12;12213:15;743:2;12176:10;:71::i;:::-;-1:-1:-1;;;;;12149:98:111;:24;;;:98;12339:20;;;;;;;;;;;;;;;;12274:86;;12258:15;;;;12297:40;;12274:86;;;;;:::i;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;2013:142:33:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:33;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;1667:955:107:-;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:107;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;1819:38:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:107;:54;;;;-1:-1:-1;;;;;1803:54:107;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:107;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;26811:25:122;;;;-1:-1:-1;;;;;2216:13:107;26852:18:122;;;26845:83;26784:18;;2101:143:107;;;-1:-1:-1;;2101:143:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:107;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:107;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:107;:48;;;;-1:-1:-1;;;;;2366:48:107;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:107;:49;;;;-1:-1:-1;;;;;2478:49:107;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:107;:37;;;;-1:-1:-1;;;;;2537:37:107;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;2592:23:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:107;:30;;;;-1:-1:-1;;;;;2585:30:107;;;;;;;;;;1667:955::o;2493:990:45:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;27395:2:122;27377:21;;;27434:2;27414:18;;;27407:30;27473:34;27468:2;27453:18;;27446:62;27544:7;27539:2;27524:18;;27517:35;27584:3;27569:19;;27193:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;:::-;;;;;;;;4349:6;:4;:6::i;1486:227:111:-;1636:47;;;;;;;;;;;;;;;;;;;1659:23;1636:47;;;1685:20;;28805:4:122;28793:17;;1685:20:111;;;28775:36:122;1685:20:111;;;;;;;;;;28748:18:122;;;1685:20:111;;;;1608:98;;;;1592:5;;1608:11;;;;:98;;1592:5;;1636:47;1685:20;1608:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:227;;;;:::o;1056:424::-;1281:54;;;;;;;;;;;;;;;;;;;1304:30;1281:54;;;1337:37;;-1:-1:-1;1337:37:111;;;29599:36:122;;;29651:18;;;29644:34;;;29694:18;;;29687:45;;;29748:18;;;29741:34;;;29791:19;;;29784:46;1248:4:111;;1263:11;;;;1248:4;;1281:54;29571:19:122;;1337:37:111;;;;;;;;;;;;1263:112;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1403:47:111;;;;;;;;;;;;;;;;;;;1426:23;1403:47;;;1452:20;;28805:4:122;28793:17;;1452:20:111;;;28775:36:122;1452:20:111;;;;;;;;;;28748:18:122;;;1452:20:111;;;;1385:88;;;;:11;;-1:-1:-1;1385:11:111;;-1:-1:-1;1385:88:111;;1397:4;;1403:47;1452:20;1385:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1056:424;;;;;;:::o;3622:277:26:-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;30043:2:122;30025:21;;;30082:2;30062:18;;;30055:30;30121:34;30116:2;30101:18;;30094:62;30192:7;30187:2;30172:18;;30165:35;30232:3;30217:19;;29841:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;31253:2:122;31235:21;;;31292:2;31272:18;;;31265:30;31331:34;31326:2;31311:18;;31304:62;31402:4;31397:2;31382:18;;31375:32;31439:3;31424:19;;31051:398;5293:41:26;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;789:312:29:-;859:1;854:6;;:1;:6;;;850:245;;881:41;;;;;32362:2:122;32344:21;;;32401:2;32381:18;;;32374:30;32440:34;32435:2;32420:18;;32413:62;32511:4;32506:2;32491:18;;32484:32;32548:3;32533:19;;32160:398;881:41:29;;;;;;;;941:52;972:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:52;;;;;;:::i;:::-;;;;;;;;1012;1043:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1012:52;;;;;;:::i;619:1105:106:-;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:106;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:106;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:106;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:106;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:106;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:106;;1223:9;;-1:-1:-1;1235:10:106;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:106;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:106;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:106;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:106;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:106;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:106;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:106;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;:::-;673:1051;619:1105::o;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:106;;;;;;;;;;;;-1:-1:-1;;1875:19:106;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:106;;;;;;;;;:11;;;;-1:-1:-1;1875:19:106;:11;;-1:-1:-1;;1875:11:106;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:106;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:119:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:119;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:119;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:119;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2224:661;;;2031:854;;;;;;:::o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;37009:74:122;;;2677:17:26;37099:18:122;;;37092:34;;;;2712:4:26;37142:18:122;;;37135:34;2489:11:26;;1671:64;2586:43;;36982:18:122;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;1332:965:115:-;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:115;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:115;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:115;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:115;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:115;;;1863:39;;;320:74:122;1780:73:115;;-1:-1:-1;1863:27:115;;;;;293:18:122;;1863:39:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:115;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:115;;;;-1:-1:-1;2012:36:115;;;:::i;:::-;-1:-1:-1;;;;;37484:15:122;;;37466:34;;37536:15;;37531:2;37516:18;;37509:43;37393:2;37378:18;2012:36:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:115;:49;;;;-1:-1:-1;;;;;1999:49:115;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:115;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;320:74:122;2228:8:115;;;;293:18:122;;2228:20:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:115;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:115;;;2258:32;;;320:74:122;2258:19:115;;;;-1:-1:-1;2258:19:115;;-1:-1:-1;293:18:122;;2258:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:261:120;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:120;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:120;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;5009:25:122;;;489:33:120;-1:-1:-1;481:42:120;;206;;548:7;;4982:18:122;;548:11:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:120;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:120;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;20040:117:31:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;:::-;20040:117;;;:::o;953:558:119:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:119;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:119;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;1297:495:120:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:120;;;;:::i;:::-;;;;1405:356;;;-1:-1:-1;1777:8:120;;1297:495;-1:-1:-1;1297:495:120:o;829:297::-;980:10;;;;972:25;;;;;;;;40680::122;;;;40721:18;;;40714:34;;;914:12:120;;939:7;;;;;;206:42;;972:7;;40653:18:122;;972:25:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:120;;-1:-1:-1;938:59:120;-1:-1:-1;1008:22:120;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:120;;;;;;41314:19:122;;;;41349:12;;;41342:28;;;;-1:-1:-1;;;41408:3:122;41404:16;;;;41422:66;41400:89;41386:12;;;41379:111;1068:25:120;;;;;;;;;41506:12:122;;;;1068:25:120;;;;;-1:-1:-1;;;829:297:120:o;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;:::-;-1:-1:-1;15402:30:31;15314:125;-1:-1:-1;;15314:125:31:o;20436:825::-;20600:38;;;-1:-1:-1;;;;;338:55:122;;;20600:38:31;;;;320:74:122;;;;20600:38:31;;;;;;;;;;293:18:122;;;;20600:38:31;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:31;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:31;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;:60::-;20859:396;;20521:740;;20436:825;;;;:::o;15033:242::-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:31;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;5009:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;4982:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;7700:156:36:-;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:36;;;;;-1:-1:-1;4573:12:36;7813:36;7806:43;7700:156;-1:-1:-1;;;7700:156:36:o;7862:143::-;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:36;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:36;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:36;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:36;;;;;;;;;-1:-1:-1;;;;;9604:15:36;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:36;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:36;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:36;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:36;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:36;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:36;-1:-1:-1;9922:38:36;;-1:-1:-1;9857:44:36;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;24262:55:122;;9995:18:36;;;24244:74:122;24334:18;;;24327:34;;;9915:45:36;;-1:-1:-1;9980:12:36;;-1:-1:-1;9995:7:36;;;;24217:18:122;;9995::36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;42346:2:122;10056:175:36;;;42328:21:122;42385:3;42365:18;;;42358:31;42425:34;42405:18;;;42398:62;42496:34;42476:18;;;42469:62;42568:34;42547:19;;;42540:63;42640:17;42619:19;;;42612:46;42675:19;;10056:175:36;42144:556:122;10056:175:36;10251:24;;;;;-1:-1:-1;;;;;37027:55:122;;10251:24:36;;;37009:74:122;37099:18;;;37092:34;;;37142:18;;;37135:34;;;10251:8:36;;;;36982:18:122;;10251:24:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:36;;;10285:19;;;;;;-1:-1:-1;10321:9:36;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:36;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;11471:393::-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:36;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:36;;11110:304;-1:-1:-1;;;;11110:304:36:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:36;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:36;:15;;-1:-1:-1;1568:34:36;;-1:-1:-1;1452:33:36;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:36;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:36;;;;1532:174;;;-1:-1:-1;;;;;1627:15:36;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:36;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:36;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:36;-1:-1:-1;1903:38:36;;-1:-1:-1;1838:44:36;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;338:55:122;;1990:25:36;;;320:74:122;1896:45:36;;-1:-1:-1;1963:22:36;;-1:-1:-1;1990:11:36;;;;293:18:122;;1990:25:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:36;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:36;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;24262:55:122;;;;24244:74;;24349:2;24334:18;;24327:34;24232:2;24217:18;;24048:319;2077:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:36;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;24262:55:122;;;24244:74;;24334:18;;;24327:34;24217:18;2160:44:36;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;42346:2:122;2268:187:36;;;42328:21:122;42385:3;42365:18;;;42358:31;42425:34;42405:18;;;42398:62;42496:34;42476:18;;;42469:62;42568:34;42547:19;;;42540:63;42640:17;42619:19;;;42612:46;42675:19;;2268:187:36;42144:556:122;2268:187:36;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;44537:55:122;;;44519:74;;44641:66;44629:79;;;44609:18;;;44602:107;;;;44725:18;;;44718:34;44783:2;44768:18;;44761:34;44506:3;44491:19;2488:86:36;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:36;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:36;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:36;;;:88;;;;-1:-1:-1;;;;;2690:15:36;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:36;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:36;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:36;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:36;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:36;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;24262:55:122;;;;24244:74;;24349:2;24334:18;;24327:34;24232:2;24217:18;;24048:319;2894:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:36;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;24262:55:122;;;24244:74;;24334:18;;;24327:34;24217:18;2985:44:36;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:36;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;37027:55:122;;;3090:43:36;;;37009:74:122;37099:18;;;37092:34;3114:18:36;37142::122;;;37135:34;36982:18;;3090:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:36;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:36;;-1:-1:-1;3238:38:36;-1:-1:-1;3305:38:36;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;44537:55:122;;;44519:74;;44641:66;44629:79;;;44609:18;;;44602:107;;;;44725:18;;;44718:34;44783:2;44768:18;;44761:34;44506:3;44491:19;3519:86:36;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:36;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:36;-1:-1:-1;;;;;3737:15:36;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:36;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;37027:55:122;;;3834:29:36;;;37009:74:122;37099:18;;;37092:34;37142:18;;;37135:34;;;36982:18;;3834:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:36;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;37027:55:122;;;3926:29:36;;;37009:74:122;37099:18;;;37092:34;37142:18;;;37135:34;;;36982:18;;3926:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;45008:2:122;4000:74:36;;;44990:21:122;45027:18;;;45020:30;;;;45086:34;45066:18;;;45059:62;45157:34;45137:18;;;45130:62;45209:19;;4000:74:36;44806:428:122;2782:1303:36;-1:-1:-1;;;;;4116:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:36;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:36;;;;4095:162;;;;;;;45441:2:122;4095:162:36;;;45423:21:122;45480:2;45460:18;;;45453:30;45519:34;45499:18;;;45492:62;45590:17;45570:18;;;45563:45;45625:19;;4095:162:36;45239:411:122;4095:162:36;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:36;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:36;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:36;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;651:180:122:-;710:6;763:2;751:9;742:7;738:23;734:32;731:52;;;779:1;776;769:12;731:52;-1:-1:-1;802:23:122;;651:180;-1:-1:-1;651:180:122:o;836:250::-;921:1;931:113;945:6;942:1;939:13;931:113;;;1021:11;;;1015:18;1002:11;;;995:39;967:2;960:10;931:113;;;-1:-1:-1;;1078:1:122;1060:16;;1053:27;836:250::o;1091:329::-;1132:3;1170:5;1164:12;1197:6;1192:3;1185:19;1213:76;1282:6;1275:4;1270:3;1266:14;1259:4;1252:5;1248:16;1213:76;:::i;:::-;1334:2;1322:15;-1:-1:-1;;1318:88:122;1309:98;;;;1409:4;1305:109;;1091:329;-1:-1:-1;;1091:329:122:o;1425:435::-;-1:-1:-1;;;;;1659:6:122;1655:55;1644:9;1637:74;1747:6;1742:2;1731:9;1727:18;1720:34;1790:2;1785;1774:9;1770:18;1763:30;1618:4;1810:44;1850:2;1839:9;1835:18;1827:6;1810:44;:::i;1865:484::-;1918:3;1956:5;1950:12;1983:6;1978:3;1971:19;2009:4;2038:2;2033:3;2029:12;2022:19;;2075:2;2068:5;2064:14;2096:1;2106:218;2120:6;2117:1;2114:13;2106:218;;;2185:13;;-1:-1:-1;;;;;2181:62:122;2169:75;;2264:12;;;;2299:15;;;;2142:1;2135:9;2106:218;;;-1:-1:-1;2340:3:122;;1865:484;-1:-1:-1;;;;;1865:484:122:o;2354:261::-;2533:2;2522:9;2515:21;2496:4;2553:56;2605:2;2594:9;2590:18;2582:6;2553:56;:::i;2870:184::-;2922:77;2919:1;2912:88;3019:4;3016:1;3009:15;3043:4;3040:1;3033:15;3059:252;3131:2;3125:9;3173:3;3161:16;;3207:18;3192:34;;3228:22;;;3189:62;3186:88;;;3254:18;;:::i;:::-;3290:2;3283:22;3059:252;:::o;3316:334::-;3387:2;3381:9;3443:2;3433:13;;-1:-1:-1;;3429:86:122;3417:99;;3546:18;3531:34;;3567:22;;;3528:62;3525:88;;;3593:18;;:::i;:::-;3629:2;3622:22;3316:334;;-1:-1:-1;3316:334:122:o;3655:183::-;3715:4;3748:18;3740:6;3737:30;3734:56;;;3770:18;;:::i;:::-;-1:-1:-1;3815:1:122;3811:14;3827:4;3807:25;;3655:183::o;3843:662::-;3897:5;3950:3;3943:4;3935:6;3931:17;3927:27;3917:55;;3968:1;3965;3958:12;3917:55;4004:6;3991:20;4030:4;4054:60;4070:43;4110:2;4070:43;:::i;:::-;4054:60;:::i;:::-;4148:15;;;4234:1;4230:10;;;;4218:23;;4214:32;;;4179:12;;;;4258:15;;;4255:35;;;4286:1;4283;4276:12;4255:35;4322:2;4314:6;4310:15;4334:142;4350:6;4345:3;4342:15;4334:142;;;4416:17;;4404:30;;4454:12;;;;4367;;4334:142;;;-1:-1:-1;4494:5:122;3843:662;-1:-1:-1;;;;;;3843:662:122:o;4510:348::-;4594:6;4647:2;4635:9;4626:7;4622:23;4618:32;4615:52;;;4663:1;4660;4653:12;4615:52;4703:9;4690:23;4736:18;4728:6;4725:30;4722:50;;;4768:1;4765;4758:12;4722:50;4791:61;4844:7;4835:6;4824:9;4820:22;4791:61;:::i;:::-;4781:71;4510:348;-1:-1:-1;;;;4510:348:122:o;5045:121::-;5130:10;5123:5;5119:22;5112:5;5109:33;5099:61;;5156:1;5153;5146:12;5171:447;5253:6;5261;5269;5277;5330:3;5318:9;5309:7;5305:23;5301:33;5298:53;;;5347:1;5344;5337:12;5298:53;5383:9;5370:23;5360:33;;5440:2;5429:9;5425:18;5412:32;5402:42;;5491:2;5480:9;5476:18;5463:32;5453:42;;5545:2;5534:9;5530:18;5517:32;5558:30;5582:5;5558:30;:::i;:::-;5171:447;;;;-1:-1:-1;5171:447:122;;-1:-1:-1;;5171:447:122:o;5885:484::-;5987:6;5995;6003;6056:2;6044:9;6035:7;6031:23;6027:32;6024:52;;;6072:1;6069;6062:12;6024:52;6108:9;6095:23;6085:33;;6169:2;6158:9;6154:18;6141:32;6196:18;6188:6;6185:30;6182:50;;;6228:1;6225;6218:12;6182:50;6251:61;6304:7;6295:6;6284:9;6280:22;6251:61;:::i;:::-;6241:71;;;6359:2;6348:9;6344:18;6331:32;6321:42;;5885:484;;;;;:::o;6662:114::-;6746:4;6739:5;6735:16;6728:5;6725:27;6715:55;;6766:1;6763;6756:12;6781:655;6859:6;6867;6875;6883;6936:3;6924:9;6915:7;6911:23;6907:33;6904:53;;;6953:1;6950;6943:12;6904:53;6992:9;6979:23;7011:29;7034:5;7011:29;:::i;:::-;7059:5;-1:-1:-1;7116:2:122;7101:18;;7088:32;7129:31;7088:32;7129:31;:::i;:::-;7179:7;-1:-1:-1;7238:2:122;7223:18;;7210:32;7251:31;7210:32;7251:31;:::i;:::-;7301:7;-1:-1:-1;7360:2:122;7345:18;;7332:32;7373:31;7332:32;7373:31;:::i;7441:1697::-;7645:4;7674:2;7714;7703:9;7699:18;7744:2;7733:9;7726:21;7767:6;7802;7796:13;7833:6;7825;7818:22;7859:2;7849:12;;7892:2;7881:9;7877:18;7870:25;;7954:2;7944:6;7941:1;7937:14;7926:9;7922:30;7918:39;7992:2;7984:6;7980:15;8013:1;8034;8044:1065;8060:6;8055:3;8052:15;8044:1065;;;8129:22;;;8153:66;8125:95;8113:108;;8244:13;;8331:9;;-1:-1:-1;;;;;8327:58:122;8312:74;;8425:11;;8419:18;8457:15;;;8450:27;;;8538:19;;8284:15;;;8570:24;;;8660:21;;;;8705:1;;8628:2;8616:15;;;8719:282;8735:8;8730:3;8727:17;8719:282;;;8816:15;;8833:66;8812:88;8798:103;;8970:17;;;;8763:1;8754:11;;;;;8927:14;;;;8719:282;;;-1:-1:-1;9087:12:122;;;;9024:5;-1:-1:-1;;;9052:15:122;;;;8086:1;8077:11;8044:1065;;;-1:-1:-1;9126:6:122;;7441:1697;-1:-1:-1;;;;;;;;;7441:1697:122:o;9143:316::-;9220:6;9228;9236;9289:2;9277:9;9268:7;9264:23;9260:32;9257:52;;;9305:1;9302;9295:12;9257:52;-1:-1:-1;;9328:23:122;;;9398:2;9383:18;;9370:32;;-1:-1:-1;9449:2:122;9434:18;;;9421:32;;9143:316;-1:-1:-1;9143:316:122:o;9695:861::-;9857:4;9886:2;9926;9915:9;9911:18;9956:2;9945:9;9938:21;9979:6;10014;10008:13;10045:6;10037;10030:22;10083:2;10072:9;10068:18;10061:25;;10145:2;10135:6;10132:1;10128:14;10117:9;10113:30;10109:39;10095:53;;10183:2;10175:6;10171:15;10204:1;10214:313;10228:6;10225:1;10222:13;10214:313;;;10317:66;10305:9;10297:6;10293:22;10289:95;10284:3;10277:108;10408:39;10440:6;10431;10425:13;10408:39;:::i;:::-;10398:49;-1:-1:-1;10505:12:122;;;;10470:15;;;;10250:1;10243:9;10214:313;;;-1:-1:-1;10544:6:122;;9695:861;-1:-1:-1;;;;;;;9695:861:122:o;10561:451::-;10653:6;10661;10669;10677;10685;10738:3;10726:9;10717:7;10713:23;10709:33;10706:53;;;10755:1;10752;10745:12;10706:53;-1:-1:-1;;10778:23:122;;;10848:2;10833:18;;10820:32;;-1:-1:-1;10899:2:122;10884:18;;10871:32;;10950:2;10935:18;;10922:32;;-1:-1:-1;11001:3:122;10986:19;10973:33;;-1:-1:-1;10561:451:122;-1:-1:-1;10561:451:122:o;11283:416::-;11376:6;11384;11437:2;11425:9;11416:7;11412:23;11408:32;11405:52;;;11453:1;11450;11443:12;11405:52;11493:9;11480:23;11526:18;11518:6;11515:30;11512:50;;;11558:1;11555;11548:12;11512:50;11581:61;11634:7;11625:6;11614:9;11610:22;11581:61;:::i;:::-;11571:71;11689:2;11674:18;;;;11661:32;;-1:-1:-1;;;;11283:416:122:o;11704:632::-;11875:2;11927:21;;;11997:13;;11900:18;;;12019:22;;;11846:4;;11875:2;12098:15;;;;12072:2;12057:18;;;11846:4;12141:169;12155:6;12152:1;12149:13;12141:169;;;12216:13;;12204:26;;12285:15;;;;12250:12;;;;12177:1;12170:9;12141:169;;;-1:-1:-1;12327:3:122;;11704:632;-1:-1:-1;;;;;;11704:632:122:o;12341:384::-;12407:6;12415;12468:2;12456:9;12447:7;12443:23;12439:32;12436:52;;;12484:1;12481;12474:12;12436:52;12523:9;12510:23;12542:30;12566:5;12542:30;:::i;:::-;12591:5;-1:-1:-1;12648:2:122;12633:18;;12620:32;12661;12620;12661;:::i;:::-;12712:7;12702:17;;;12341:384;;;;;:::o;13623:246::-;13689:6;13697;13750:2;13738:9;13729:7;13725:23;13721:32;13718:52;;;13766:1;13763;13756:12;13718:52;-1:-1:-1;;13789:23:122;;;13859:2;13844:18;;;13831:32;;-1:-1:-1;13623:246:122:o;14628:437::-;14707:1;14703:12;;;;14750;;;14771:61;;14825:4;14817:6;14813:17;14803:27;;14771:61;14878:2;14870:6;14867:14;14847:18;14844:38;14841:218;;14915:77;14912:1;14905:88;15016:4;15013:1;15006:15;15044:4;15041:1;15034:15;14841:218;;14628:437;;;:::o;15474:184::-;15526:77;15523:1;15516:88;15623:4;15620:1;15613:15;15647:4;15644:1;15637:15;15663:184;15733:6;15786:2;15774:9;15765:7;15761:23;15757:32;15754:52;;;15802:1;15799;15792:12;15754:52;-1:-1:-1;15825:16:122;;15663:184;-1:-1:-1;15663:184:122:o;16240:::-;16292:77;16289:1;16282:88;16389:4;16386:1;16379:15;16413:4;16410:1;16403:15;16429:462;16468:1;16494;16484:189;;16529:77;16526:1;16519:88;16630:4;16627:1;16620:15;16658:4;16655:1;16648:15;16484:189;16770:66;16767:1;16764:73;16695:66;16692:1;16689:73;16685:153;16682:179;;;16841:18;;:::i;:::-;-1:-1:-1;16875:10:122;;16429:462::o;16896:292::-;16968:9;;;16935:7;16993:9;;17010:66;17004:73;;16989:89;16986:115;;;17081:18;;:::i;:::-;17154:1;17145:7;17140:16;17137:1;17134:23;17130:1;17123:9;17120:38;17110:72;;17162:18;;:::i;17292:1522::-;17510:13;;-1:-1:-1;;;;;86:54:122;74:67;;17472:3;17457:19;;17582:4;17574:6;17570:17;17564:24;17597:60;17651:4;17640:9;17636:20;17622:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;17597:60;;17713:4;17705:6;17701:17;17695:24;17688:4;17677:9;17673:20;17666:54;17776:4;17768:6;17764:17;17758:24;17751:4;17740:9;17736:20;17729:54;17839:4;17831:6;17827:17;17821:24;17814:4;17803:9;17799:20;17792:54;17895:4;17887:6;17883:17;17877:24;17910:62;17966:4;17955:9;17951:20;17935:14;-1:-1:-1;;;;;86:54:122;74:67;;14:133;17910:62;;18021:4;18013:6;18009:17;18003:24;18036:53;18083:4;18072:9;18068:20;18052:14;6444:13;6437:21;6425:34;;6374:91;18036:53;;18138:4;18130:6;18126:17;18120:24;18153:53;18200:4;18189:9;18185:20;18169:14;6444:13;6437:21;6425:34;;6374:91;18153:53;-1:-1:-1;18225:6:122;18268:15;;;18262:22;17269:10;17258:22;18327:18;;;17246:35;18365:6;18408:15;;;18402:22;-1:-1:-1;;;;;86:54:122;;;18474:18;;;74:67;;;;18512:6;18555:15;;;18549:22;86:54;;;18621:18;;;74:67;18659:6;18707:15;;;18701:22;18681:18;;;18674:50;18743:6;18791:15;;;18785:22;18765:18;;;;18758:50;;;;18765:18;17292:1522::o;18819:672::-;19059:4;-1:-1:-1;;;;;19169:2:122;19161:6;19157:15;19146:9;19139:34;19221:2;19213:6;19209:15;19204:2;19193:9;19189:18;19182:43;;19261:6;19256:2;19245:9;19241:18;19234:34;19304:3;19299:2;19288:9;19284:18;19277:31;19331:45;19371:3;19360:9;19356:19;19348:6;19331:45;:::i;:::-;19425:9;19417:6;19413:22;19407:3;19396:9;19392:19;19385:51;19453:32;19478:6;19470;19453:32;:::i;:::-;19445:40;18819:672;-1:-1:-1;;;;;;;;18819:672:122:o;19496:162::-;-1:-1:-1;;;;;19583:5:122;19579:54;19572:5;19569:65;19559:93;;19648:1;19645;19638:12;19663:154;19750:13;;19772:39;19750:13;19772:39;:::i;19822:136::-;19900:13;;19922:30;19900:13;19922:30;:::i;19963:164::-;20039:13;;20088;;20081:21;20071:32;;20061:60;;20117:1;20114;20107:12;20132:1154;20224:6;20277:3;20265:9;20256:7;20252:23;20248:33;20245:53;;;20294:1;20291;20284:12;20245:53;20320:22;;:::i;:::-;20365:48;20403:9;20365:48;:::i;:::-;20358:5;20351:63;20446:57;20499:2;20488:9;20484:18;20446:57;:::i;:::-;20441:2;20434:5;20430:14;20423:81;20536:57;20589:2;20578:9;20574:18;20536:57;:::i;:::-;20531:2;20524:5;20520:14;20513:81;20647:2;20636:9;20632:18;20626:25;20621:2;20614:5;20610:14;20603:49;20706:3;20695:9;20691:19;20685:26;20679:3;20672:5;20668:15;20661:51;20745:49;20789:3;20778:9;20774:19;20745:49;:::i;:::-;20739:3;20732:5;20728:15;20721:74;20849:3;20838:9;20834:19;20828:26;20822:3;20815:5;20811:15;20804:51;20909:3;20898:9;20894:19;20888:26;20882:3;20875:5;20871:15;20864:51;20934:3;20990:2;20979:9;20975:18;20969:25;20964:2;20957:5;20953:14;20946:49;;21014:3;21049:46;21091:2;21080:9;21076:18;21049:46;:::i;:::-;21033:14;;;21026:70;21115:3;21156:18;;;21150:25;21134:14;;;21127:49;21195:3;21236:18;;;21230:25;21214:14;;;21207:49;;;;-1:-1:-1;21037:5:122;20132:1154;-1:-1:-1;20132:1154:122:o;21291:482::-;21380:1;21423:5;21380:1;21437:330;21458:7;21448:8;21445:21;21437:330;;;21577:4;21509:66;21505:77;21499:4;21496:87;21493:113;;;21586:18;;:::i;:::-;21636:7;21626:8;21622:22;21619:55;;;21656:16;;;;21619:55;21735:22;;;;21695:15;;;;21437:330;;;21441:3;21291:482;;;;;:::o;21778:866::-;21827:5;21857:8;21847:80;;-1:-1:-1;21898:1:122;21912:5;;21847:80;21946:4;21936:76;;-1:-1:-1;21983:1:122;21997:5;;21936:76;22028:4;22046:1;22041:59;;;;22114:1;22109:130;;;;22021:218;;22041:59;22071:1;22062:10;;22085:5;;;22109:130;22146:3;22136:8;22133:17;22130:43;;;22153:18;;:::i;:::-;-1:-1:-1;;22209:1:122;22195:16;;22224:5;;22021:218;;22323:2;22313:8;22310:16;22304:3;22298:4;22295:13;22291:36;22285:2;22275:8;22272:16;22267:2;22261:4;22258:12;22254:35;22251:77;22248:159;;;-1:-1:-1;22360:19:122;;;22392:5;;22248:159;22439:34;22464:8;22458:4;22439:34;:::i;:::-;22569:6;22501:66;22497:79;22488:7;22485:92;22482:118;;;22580:18;;:::i;:::-;22618:20;;21778:866;-1:-1:-1;;;21778:866:122:o;22649:140::-;22707:5;22736:47;22777:4;22767:8;22763:19;22757:4;22736:47;:::i;22794:168::-;22867:9;;;22898;;22915:15;;;22909:22;;22895:37;22885:71;;22936:18;;:::i;22967:151::-;23057:4;23050:12;;;23036;;;23032:31;;23075:14;;23072:40;;;23092:18;;:::i;23123:148::-;23211:4;23190:12;;;23204;;;23186:31;;23229:13;;23226:39;;;23245:18;;:::i;23276:128::-;23343:9;;;23364:11;;;23361:37;;;23378:18;;:::i;23409:219::-;23558:2;23547:9;23540:21;23521:4;23578:44;23618:2;23607:9;23603:18;23595:6;23578:44;:::i;24372:291::-;24474:6;24527:2;24515:9;24506:7;24502:23;24498:32;24495:52;;;24543:1;24540;24533:12;24495:52;24575:9;24569:16;24594:39;24627:5;24594:39;:::i;25375:430::-;25572:66;25564:6;25560:79;25555:3;25548:92;25530:3;25669:6;25663:13;25685:74;25752:6;25748:1;25743:3;25739:11;25732:4;25724:6;25720:17;25685:74;:::i;:::-;25779:16;;;;25797:1;25775:24;;25375:430;-1:-1:-1;;;25375:430:122:o;25810:287::-;25939:3;25977:6;25971:13;25993:66;26052:6;26047:3;26040:4;26032:6;26028:17;25993:66;:::i;:::-;26075:16;;;;;25810:287;-1:-1:-1;;25810:287:122:o;26102:202::-;26169:6;26222:2;26210:9;26201:7;26197:23;26193:32;26190:52;;;26238:1;26235;26228:12;26190:52;26261:37;26288:9;26261:37;:::i;26507:125::-;26572:9;;;26593:10;;;26590:36;;;26606:18;;:::i;27763:348::-;27993:2;27982:9;27975:21;27956:4;28013:49;28058:2;28047:9;28043:18;27676:2;27664:15;;27711:12;27704:4;27695:14;;27688:36;27749:2;27740:12;;27599:159;28013:49;28005:57;;28098:6;28093:2;28082:9;28078:18;28071:34;27763:348;;;;:::o;28280:::-;28510:2;28499:9;28492:21;28473:4;28530:49;28575:2;28564:9;28560:18;28193:2;28181:15;;28228:12;28221:4;28212:14;;28205:36;28266:2;28257:12;;28116:159;28822:497;-1:-1:-1;;;;;29047:6:122;29043:55;29032:9;29025:74;29135:2;29130;29119:9;29115:18;29108:30;29006:4;29161:44;29201:2;29190:9;29186:18;29178:6;29161:44;:::i;:::-;29253:9;29245:6;29241:22;29236:2;29225:9;29221:18;29214:50;29281:32;29306:6;29298;29281:32;:::i;:::-;29273:40;28822:497;-1:-1:-1;;;;;;28822:497:122:o;30247:397::-;30477:2;30466:9;30459:21;30440:4;30497:49;30542:2;30531:9;30527:18;27676:2;27664:15;;27711:12;27704:4;27695:14;;27688:36;27749:2;27740:12;;27599:159;30497:49;30489:57;;-1:-1:-1;;;;;30586:6:122;30582:55;30577:2;30566:9;30562:18;30555:83;30247:397;;;;:::o;30649:::-;30879:2;30868:9;30861:21;30842:4;30899:49;30944:2;30933:9;30929:18;28193:2;28181:15;;28228:12;28221:4;28212:14;;28205:36;28266:2;28257:12;;28116:159;32563:439;32813:2;32802:9;32795:21;32776:4;32839:49;32884:2;32873:9;32869:18;27676:2;27664:15;;27711:12;27704:4;27695:14;;27688:36;27749:2;27740:12;;27599:159;32839:49;32936:9;32928:6;32924:22;32919:2;32908:9;32904:18;32897:50;32964:32;32989:6;32981;32964:32;:::i;33007:439::-;33257:2;33246:9;33239:21;33220:4;33283:49;33328:2;33317:9;33313:18;28193:2;28181:15;;28228:12;28221:4;28212:14;;28205:36;28266:2;28257:12;;28116:159;33640:294;33721:1;33714:5;33711:12;33701:200;;33757:77;33754:1;33747:88;33858:4;33855:1;33848:15;33886:4;33883:1;33876:15;33701:200;33910:18;;33640:294::o;33939:1028::-;34338:4;34367:3;-1:-1:-1;;;;;34470:2:122;34462:6;34458:15;34447:9;34440:34;34510:6;34505:2;34494:9;34490:18;34483:34;34553:2;34548;34537:9;34533:18;34526:30;34573:44;34613:2;34602:9;34598:18;34590:6;34573:44;:::i;:::-;34565:52;;34626:53;34675:2;34664:9;34660:18;34652:6;34626:53;:::i;:::-;34710:3;34695:19;;34688:35;;;;-1:-1:-1;34754:3:122;34739:19;;34732:35;;;;34798:3;34783:19;;34776:35;;;;34848:15;;;34842:3;34827:19;;34820:44;34901:15;;;34895:3;34880:19;;34873:44;34948:3;34933:19;34926:35;;;;33939:1028;;-1:-1:-1;;;;33939:1028:122:o;34972:492::-;35147:3;35185:6;35179:13;35201:66;35260:6;35255:3;35248:4;35240:6;35236:17;35201:66;:::i;:::-;35330:13;;35289:16;;;;35352:70;35330:13;35289:16;35399:4;35387:17;;35352:70;:::i;:::-;35438:20;;34972:492;-1:-1:-1;;;;34972:492:122:o;35469:195::-;35508:3;35539:66;35532:5;35529:77;35526:103;;35609:18;;:::i;:::-;-1:-1:-1;35656:1:122;35645:13;;35469:195::o;35669:1133::-;36102:4;36131:3;-1:-1:-1;;;;;36234:2:122;36226:6;36222:15;36211:9;36204:34;36274:6;36269:2;36258:9;36254:18;36247:34;36317:2;36312;36301:9;36297:18;36290:30;36343:44;36383:2;36372:9;36368:18;36360:6;36343:44;:::i;:::-;36329:58;;36396:53;36445:2;36434:9;36430:18;36422:6;36396:53;:::i;:::-;36486:6;36480:3;36469:9;36465:19;36458:35;36530:6;36524:3;36513:9;36509:19;36502:35;36574:6;36568:3;36557:9;36553:19;36546:35;36630:2;36622:6;36618:15;36612:3;36601:9;36597:19;36590:44;36683:2;36675:6;36671:15;36665:3;36654:9;36650:19;36643:44;;36736:9;36728:6;36724:22;36718:3;36707:9;36703:19;36696:51;36764:32;36789:6;36781;36764:32;:::i;:::-;36756:40;35669:1133;-1:-1:-1;;;;;;;;;;;;;35669:1133:122:o;38410:339::-;-1:-1:-1;;;;;38591:6:122;38587:55;38576:9;38569:74;38679:2;38674;38663:9;38659:18;38652:30;38550:4;38699:44;38739:2;38728:9;38724:18;38716:6;38699:44;:::i;38754:1051::-;39171:4;39200:3;39230:2;39219:9;39212:21;39256:56;39308:2;39297:9;39293:18;39285:6;39256:56;:::i;:::-;39343:2;39328:18;;;39321:34;;;;-1:-1:-1;;;;;39452:15:122;;;39447:2;39432:18;;39425:43;39504:22;;;39499:2;39484:18;;39477:50;-1:-1:-1;39536:17:122;;39622:15;;;39616:3;39601:19;;39594:44;-1:-1:-1;;39675:15:122;;;39669:3;39654:19;;39647:44;39740:4;39728:17;;;;39722:3;39707:19;;39700:46;39783:15;;;39777:3;39762:19;;;39755:44;;;;39570:15;;38754:1051;-1:-1:-1;38754:1051:122:o;39810:408::-;-1:-1:-1;;;;;40017:6:122;40013:55;40002:9;39995:74;40105:2;40100;40089:9;40085:18;40078:30;39976:4;40125:44;40165:2;40154:9;40150:18;40142:6;40125:44;:::i;:::-;40117:52;;40205:6;40200:2;40189:9;40185:18;40178:34;39810:408;;;;;;:::o;40759:369::-;40845:6;40853;40861;40914:2;40902:9;40893:7;40889:23;40885:32;40882:52;;;40930:1;40927;40920:12;40882:52;40962:9;40956:16;40981:29;41004:5;40981:29;:::i;:::-;41074:2;41059:18;;41053:25;41118:2;41103:18;;;41097:25;41029:5;;41053:25;;-1:-1:-1;41097:25:122;40759:369;-1:-1:-1;;;40759:369:122:o;41529:610::-;41775:13;;41718:3;;41749;;41828:4;41855:15;;;41718:3;41898:175;41912:6;41909:1;41906:13;41898:175;;;41975:13;;41961:28;;42011:14;;;;42048:15;;;;41934:1;41927:9;41898:175;;;-1:-1:-1;;42082:21:122;;;-1:-1:-1;42119:14:122;;;;;-1:-1:-1;;;41529:610:122:o;42705:659::-;42770:5;42823:3;42816:4;42808:6;42804:17;42800:27;42790:55;;42841:1;42838;42831:12;42790:55;42870:6;42864:13;42896:4;42920:60;42936:43;42976:2;42936:43;:::i;42920:60::-;43014:15;;;43100:1;43096:10;;;;43084:23;;43080:32;;;43045:12;;;;43124:15;;;43121:35;;;43152:1;43149;43142:12;43121:35;43188:2;43180:6;43176:15;43200:135;43216:6;43211:3;43208:15;43200:135;;;43282:10;;43270:23;;43313:12;;;;43233;;43200:135;;43369:614;43498:6;43506;43559:2;43547:9;43538:7;43534:23;43530:32;43527:52;;;43575:1;43572;43565:12;43527:52;43608:9;43602:16;43637:18;43678:2;43670:6;43667:14;43664:34;;;43694:1;43691;43684:12;43664:34;43717:72;43781:7;43772:6;43761:9;43757:22;43717:72;:::i;:::-;43707:82;;43835:2;43824:9;43820:18;43814:25;43798:41;;43864:2;43854:8;43851:16;43848:36;;;43880:1;43877;43870:12;43848:36;;43903:74;43969:7;43958:8;43947:9;43943:24;43903:74;:::i;:::-;43893:84;;;43369:614;;;;;:::o","linkReferences":{},"immutableReferences":{"46575":[{"start":3678,"length":32},{"start":4138,"length":32},{"start":5284,"length":32},{"start":5908,"length":32},{"start":6979,"length":32},{"start":8977,"length":32},{"start":10136,"length":32},{"start":12658,"length":32},{"start":13584,"length":32},{"start":14065,"length":32},{"start":15203,"length":32}],"46584":[{"start":3737,"length":32},{"start":4186,"length":32},{"start":5342,"length":32},{"start":5956,"length":32},{"start":7038,"length":32},{"start":9036,"length":32},{"start":10195,"length":32},{"start":12717,"length":32},{"start":13643,"length":32},{"start":14113,"length":32},{"start":15262,"length":32}]}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_OracleNormalisesPrice_concrete()":"c7738c71","test_OracleNormalisesPrice_fuzz(uint8,uint8,uint8,uint8)":"60cf299c","test_OracleRevertOnExpiredOrder_fuzz(uint32,uint32)":"bc8f70a9","test_OracleRevertOnInvalidPrice_fuzz(int256,int256)":"d7875278","test_OracleRevertOnStalePrice_fuzz(uint256,uint256,uint256)":"6bd46475","test_RevertStrikePriceNotMet_fuzz(int256,int256,int256,uint256,uint256)":"8807cc5c","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","test_strikePriceMet_fuzz(int256,int256,int256,uint32)":"4e050488","test_strikePriceNotMet_concrete()":"9989a732","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_OracleNormalisesPrice_concrete\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"sellTokenERC20Decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"buyTokenERC20Decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"sellTokenOracleDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"buyTokenOracleDecimals\",\"type\":\"uint8\"}],\"name\":\"test_OracleNormalisesPrice_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"currentTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"}],\"name\":\"test_OracleRevertOnExpiredOrder_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"invalidPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"validPrice\",\"type\":\"int256\"}],\"name\":\"test_OracleRevertOnInvalidPrice_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxTimeSinceLastOracleUpdate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"name\":\"test_OracleRevertOnStalePrice_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"sellTokenOraclePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"buyTokenOraclePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"strike\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"staleTime\",\"type\":\"uint256\"}],\"name\":\"test_RevertStrikePriceNotMet_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"sellTokenOraclePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"buyTokenOraclePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"strike\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"}],\"name\":\"test_strikePriceMet_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_strikePriceNotMet_concrete\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.stoploss.t.sol\":\"ComposableCoWStopLossTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IAggregatorV3Interface.sol\":{\"keccak256\":\"0x7edac36e73aa9a9693747b30013bc76a82f717a0c713d49dffa74842b872bb77\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aa1e61229e0d2219bff2257a5ea2ea783a6c275cbee6ef8bd322fe229f88fa7b\",\"dweb:/ipfs/Qmdw8g8jLjofmzMBraACN23NE5i5QMmJsPCqRjhmfygzJX\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/StopLoss.sol\":{\"keccak256\":\"0x5b2ffe903f4168b9e08a23a6d1dbdad725c3fe24ae84e27f1a89de6604542745\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://adf271d87b4d602de9d537d73129d1779b984e859dd35f4780c2036918c80cc8\",\"dweb:/ipfs/QmP4eRg7KYq6Pii2UKKprAV65CKj5iqi3yEpfa6jA6LX47\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.stoploss.t.sol\":{\"keccak256\":\"0x35365e5bead65d126550fecff1ffa080a0b3ba4b2e1022cf50f4ccee036f7dac\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9a159191614d044426cf31dd72e8dd66df9c059e494386d2d7f8c4aeab5e9100\",\"dweb:/ipfs/QmdtwyKCDH5VXuSt5kgYvwnXwt1k7uSDuC5XYrspZ57nDo\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_OracleNormalisesPrice_concrete"},{"inputs":[{"internalType":"uint8","name":"sellTokenERC20Decimals","type":"uint8"},{"internalType":"uint8","name":"buyTokenERC20Decimals","type":"uint8"},{"internalType":"uint8","name":"sellTokenOracleDecimals","type":"uint8"},{"internalType":"uint8","name":"buyTokenOracleDecimals","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"test_OracleNormalisesPrice_fuzz"},{"inputs":[{"internalType":"uint32","name":"currentTime","type":"uint32"},{"internalType":"uint32","name":"validTo","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"test_OracleRevertOnExpiredOrder_fuzz"},{"inputs":[{"internalType":"int256","name":"invalidPrice","type":"int256"},{"internalType":"int256","name":"validPrice","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"test_OracleRevertOnInvalidPrice_fuzz"},{"inputs":[{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"maxTimeSinceLastOracleUpdate","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_OracleRevertOnStalePrice_fuzz"},{"inputs":[{"internalType":"int256","name":"sellTokenOraclePrice","type":"int256"},{"internalType":"int256","name":"buyTokenOraclePrice","type":"int256"},{"internalType":"int256","name":"strike","type":"int256"},{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"staleTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_RevertStrikePriceNotMet_fuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[{"internalType":"int256","name":"sellTokenOraclePrice","type":"int256"},{"internalType":"int256","name":"buyTokenOraclePrice","type":"int256"},{"internalType":"int256","name":"strike","type":"int256"},{"internalType":"uint32","name":"validTo","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"test_strikePriceMet_fuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_strikePriceNotMet_concrete"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.stoploss.t.sol":"ComposableCoWStopLossTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IAggregatorV3Interface.sol":{"keccak256":"0x7edac36e73aa9a9693747b30013bc76a82f717a0c713d49dffa74842b872bb77","urls":["bzz-raw://aa1e61229e0d2219bff2257a5ea2ea783a6c275cbee6ef8bd322fe229f88fa7b","dweb:/ipfs/Qmdw8g8jLjofmzMBraACN23NE5i5QMmJsPCqRjhmfygzJX"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/StopLoss.sol":{"keccak256":"0x5b2ffe903f4168b9e08a23a6d1dbdad725c3fe24ae84e27f1a89de6604542745","urls":["bzz-raw://adf271d87b4d602de9d537d73129d1779b984e859dd35f4780c2036918c80cc8","dweb:/ipfs/QmP4eRg7KYq6Pii2UKKprAV65CKj5iqi3yEpfa6jA6LX47"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.stoploss.t.sol":{"keccak256":"0x35365e5bead65d126550fecff1ffa080a0b3ba4b2e1022cf50f4ccee036f7dac","urls":["bzz-raw://9a159191614d044426cf31dd72e8dd66df9c059e494386d2d7f8c4aeab5e9100","dweb:/ipfs/QmdtwyKCDH5VXuSt5kgYvwnXwt1k7uSDuC5XYrspZ57nDo"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":111} \ No newline at end of file diff --git a/out/ComposableCoW.t.sol/ComposableCoWTest.json b/out/ComposableCoW.t.sol/ComposableCoWTest.json new file mode 100644 index 0000000..8a1dec6 --- /dev/null +++ b/out/ComposableCoW.t.sol/ComposableCoWTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_createAndRemove_FuzzSetAndEmit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"handler","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_createAndRemove_e2e","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_createWithContextAndRemove_FuzzSetAndEmit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"handler","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"},{"name":"ctxValue","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_create_RevertOnInvalidHandler","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getOrderInfo_after_create_returns_all_fields","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getOrderInfo_for_unauthorized_owner_returns_inert_defaults","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getOrderInfo_with_swap_guard_set_returns_guard_address","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrderWithSignature_FuzzRevertInvalidProof","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"handler","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrderWithSignature_FuzzRevertInvalidSingleOrder","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"handler","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrderWithSignature_ReturnsValidPayloadForNonSafe","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrderWithSignature_ReturnsValidPayloadForSafe","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrderWithSignature_RevertInterfaceNotSupported","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_isValidSafeSignature_BaseConditionalOrder_RevertOnInvalidHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_isValidSafeSignature_FuzzPassesContextToHandler","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_isValidSafeSignature_FuzzRevertInvalidProof","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"handler","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_isValidSafeSignature_FuzzRevertInvalidSingleOrder","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"handler","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setRootWithContext_FuzzSetAndEmit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setRootWithContext_e2e","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setRoot_FuzzSetAndEmit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"root","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setRoot_e2e","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790553480156200002e57600080fd5b506040516200003d9062000389565b604051809103906000f0801580156200005a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055604051620000899062000397565b604051809103906000f080158015620000a6573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000d590620003a5565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012190620003b3565b604051809103906000f0801580156200013e573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200016d90620003c1565b604051809103906000f0801580156200018a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001b990620003cf565b604051809103906000f080158015620001d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020590620003dd565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f0801580156200025a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200028990620003dd565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002de573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200030d90620003dd565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000362573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003eb565b613dd180620173e683390190565b610979806201b1b783390190565b611168806201bb3083390190565b6124eb806201cc9883390190565b6102ec806201f18383390190565b610470806201f46f83390190565b610e13806201f8df83390190565b62016fea80620003fc6000396000f3fe60806040523480156200001157600080fd5b5060043610620003b55760003560e01c8063916a17c611620001f9578063b86161951162000119578063dd6345ec11620000af578063e27d51531162000086578063e27d51531462000786578063ee692c5f146200079d578063fa7626d414620007b4578063fbfa77cf14620007c257600080fd5b8063dd6345ec146200075e578063dfe274a91462000768578063e20c9f71146200077c57600080fd5b8063c80916d411620000f0578063c80916d41462000708578063cf06c7b7146200071c578063d21220a71462000733578063dd1d2599146200074757600080fd5b8063b861619514620006c4578063ba414fa614620006ea578063c45a015514620006f457600080fd5b8063a3dc493d116200018f578063b379f91a1162000166578063b379f91a1462000685578063b5508aa9146200069c578063b62654fb14620006a6578063b716db6614620006ba57600080fd5b8063a3dc493d146200065d578063aade11821462000667578063ad9b0475146200067157600080fd5b80639e3791ff11620001d05780639e3791ff146200061e5780639fbcc9ad1462000635578063a19a98891462000649578063a3d50ac5146200065357600080fd5b8063916a17c614620005f3578063945602ce14620005fd5780639658be6c146200061457600080fd5b806334d17a7011620002e557806366d9a9a0116200027b5780637d499aa411620002525780637d499aa414620005a85780637db2a8ba14620005bc5780638406c07914620005c657806385226c8114620005da57600080fd5b806366d9a9a0146200056e5780636f6649a6146200058757806370af4cdb146200059157600080fd5b80633e5e3c2311620002bc5780633e5e3c23146200051e5780633f7286f4146200052857806351160630146200053257806358161a42146200054657600080fd5b806334d17a7014620004e657806336a7d48214620004f05780633ba95806146200050757600080fd5b80631ed7831c116200035b5780632c434b9811620003325780632c434b9814620004955780632e08d602146200049f578063329696ac14620004c5578063345e8d4a14620004cf57600080fd5b80631ed7831c146200045457806325be124e146200046d578063294402cc146200048157600080fd5b80630c8548f511620003905780630c8548f514620003e75780630dfe16811462000418578063151bcd2c146200042c57600080fd5b806306c30b3a14620003ba5780630a9254e414620003c65780630aa9352914620003d0575b600080fd5b620003c4620007d6565b005b620003c462000aad565b620003c4620003e13660046200a70a565b62000ab9565b603354620003fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620003fb906001600160a01b031681565b620004436200043d3660046200a77e565b62000c34565b6040516200040f939291906200a7ec565b6200045e62000cf1565b6040516200040f91906200a85c565b602354620003fb906001600160a01b031681565b601f54620003fb906001600160a01b031681565b620003c462000d55565b620004b6620004b03660046200a905565b62001296565b6040519081526020016200040f565b620003c462001372565b620003c4620004e03660046200a946565b6200147e565b620003c4620016a6565b620003c4620005013660046200a70a565b620018b6565b620003c4620005183660046200a9ee565b62001b3e565b6200045e62001b73565b6200045e62001bd5565b602554620003fb906001600160a01b031681565b6200055d620005573660046200aa1d565b62001c37565b60405190151581526020016200040f565b6200057862001c88565b6040516200040f91906200aa71565b620003c462001d90565b620003c4620005a23660046200ab5e565b62001ff2565b603254620003fb906001600160a01b031681565b620003c462002250565b602a54620003fb906001600160a01b031681565b620005e46200273d565b6040516200040f91906200abda565b6200057862002817565b620003c46200060e3660046200a9ee565b62002916565b620003c462002c00565b620003c46200062f3660046200a70a565b62002ece565b601e54620003fb906001600160a01b031681565b620003c46200301d565b620003c462003526565b620003c4620036e4565b620003c462003a4a565b603154620003fb906001600160a01b031681565b620003c4620006963660046200ac5e565b62003c48565b620005e462003c8d565b601b54620003fb906001600160a01b031681565b620003c462003d67565b620006db620006d53660046200ac96565b62003ea3565b6040516200040f91906200ad11565b6200055d6200407b565b601c54620003fb906001600160a01b031681565b601d54620003fb906001600160a01b031681565b620004b66200072d3660046200a77e565b620041c7565b602254620003fb906001600160a01b031681565b620004b6620007583660046200ad26565b62004330565b620003c462004360565b602054620003fb906001600160a01b031681565b6200045e620044c3565b620004b6620007973660046200a77e565b62004525565b620003c4620007ae3660046200a946565b62004552565b6000546200055d9060ff1681565b602454620003fb906001600160a01b031681565b60006200085f604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b6031546034546040517f4a03c69a0000000000000000000000000000000000000000000000000000000081529293506001600160a01b039182169260009290911690634a03c69a90620008b990859087906004016200ad7d565b608060405180830381865afa158015620008d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fd91906200adb2565b80516034546040517f5500079d000000000000000000000000000000000000000000000000000000008152929350620009d2926001600160a01b0390911690635500079d90620009529088906004016200ae2b565b602060405180830381865afa15801562000970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099691906200ae40565b6040518060400160405280601181526020017f686173682073686f756c64206d61746368000000000000000000000000000000815250620047fb565b62000a188160200151156040518060400160405280601b81526020017f657870656374656420617574686f72697a6564203d2066616c7365000000000081525062004848565b62000a6181604001516000801b6040518060400160405280601581526020017f6578706563746564207a65726f20636162696e65740000000000000000000000815250620047fb565b62000aa8816060015160006040518060400160405280601981526020017f657870656374656420756e73657420737761702067756172640000000000000081525062004892565b505050565b62000ab7620048f1565b565b604080516060810182526001600160a01b03851681526020810184905280820183905290517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f7a933234000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562000b6157600080fd5b505af115801562000b76573d6000803e3d6000fd5b5050603454604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b0390921693506326e0a196925062000be3918991869190602481016200ae5a565b600060405180830381865afa15801562000c01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c2b91908101906200af16565b50505050505050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000c68906200b021565b80601f016020809104026020016040519081016040528092919081815260200182805462000c96906200b021565b801562000ce75780601f1062000cbb5761010080835404028352916020019162000ce7565b820191906000526020600020905b81548152906001019060200180831162000cc957829003601f168201915b5050505050905083565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000d4b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000d2c575b5050505050905090565b60315460009062000d71906001600160a01b0316603262004c71565b90506000808062000d8d848260396200129662003ea362004f03565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a8214640000000000000000000000000000000000000000000000000000000060048201529295509093509150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562000e1b57600080fd5b505af115801562000e30573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a196945062000e96939092169186919088906004016200ae5a565b600060405180830381865afa15801562000eb4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000ede91908101906200af16565b50506040805180820182526000808252825160208181019094529081529181019190915260315462000f1b906001600160a01b03168583620051f4565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152919384936001600160a01b03918216936326e0a1969362000f81939092169189918b906004016200ae5a565b600060405180830381865afa15801562000f9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000fc991908101906200af16565b9150915060007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200105991906200ae40565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152929350620010949290911690858560006200546d565b6040517f44d7f0a400000000000000000000000000000000000000000000000000000000815260048101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906344d7f0a4906024016020604051808303816000875af115801562001100573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112691906200b076565b5060315462001141906001600160a01b0316600086620051f4565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a821464000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620011c757600080fd5b505af1158015620011dc573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a19694506200124293909216918a91908c906004016200ae5a565b600060405180830381865afa15801562001260573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200128a91908101906200af16565b50505050505050505050565b600060018251116200132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200134d57620013458262005d9b565b91506200132f565b816000815181106200136357620013636200b094565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000ab7926001600160a01b03169163f698da259160048083019260209291908290030181865afa158015620013d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013fe91906200ae40565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147891906200ae40565b62005f27565b84516040517f4c63e5620000000000000000000000000000000000000000000000000000000081529015156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620014e657600080fd5b505afa158015620014fb573d6000803e3d6000fd5b5050505060006040518060600160405280856001600160a01b0316815260200184815260200183815250905062001558878660405180604001604052806000815260200160405180602001604052806000815250815250620051f4565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a821464000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620015de57600080fd5b505af1158015620015f3573d6000803e3d6000fd5b5050603454604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0390921693506326e0a196925062001653918b9186918c906004016200ae5a565b600060405180830381865afa15801562001671573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200169b91908101906200af16565b505050505050505050565b603154600090620016c2906001600160a01b0316603262004c71565b905060008080620016de848260396200129662003ea362004f03565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a8214640000000000000000000000000000000000000000000000000000000060048201529295509093509150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200176c57600080fd5b505af115801562001781573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a1969450620017e7939092169186919088906004016200ae5a565b600060405180830381865afa15801562001805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200182f91908101906200af16565b50506040805180820182526000808252825160208181018552918152818301526031546036549351929362000f1b936001600160a01b0392831693899387931691620018a1917f7465737456616c75650000000000000000000000000000000000000000000000910190815260200190565b60405160208183030381529060405262006039565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200192557600080fd5b505afa1580156200193a573d6000803e3d6000fd5b5050604080516060810182526001600160a01b03871681526020810186905280820185905290517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f7a933234000000000000000000000000000000000000000000000000000000006004820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015620019e857600080fd5b505af1158015620019fd573d6000803e3d6000fd5b50506034546001600160a01b031691506353f00b1490508660007f3e065c237239c100e9e1a76c49e8333afdd19f83903bd9ddcaf0fde32594632d7f26d17eb22ca6b2615b053b942d517a8eb1dc14746ac5059914694f5dd6023a528262001a6462006360565b60405160200162001a7691906200b183565b60408051601f19818403018152600060608401818152608085018452845260208085018d905283518082018552918252848401919091529151909262001abf929091016200b194565b6040516020818303038152906040526040518863ffffffff1660e01b815260040162001af297969594939291906200b1f2565b602060405180830381865afa15801562001b10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b3691906200b254565b505050505050565b62001b6f828260405180604001604052806000815260200160405180602001604052806000815250815250620051f4565b5050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000d4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d2c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000d4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d2c575050505050905090565b81516000908290825b8181101562001c7c5762001c718387838151811062001c635762001c636200b094565b602002602001015162004330565b925060010162001c40565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001d875760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001d6e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001d1a5790505b5050505050815250508152602001906001019062001cac565b50505050905090565b600062001e19604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b6031549091506001600160a01b031662001e3681836000620064e8565b6000600260405162001e48906200a52a565b908152602001604051809103906000f08015801562001e6b573d6000803e3d6000fd5b50905062001e7a828262006794565b6034546040517f4a03c69a0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690634a03c69a9062001ec890869088906004016200ad7d565b608060405180830381865afa15801562001ee6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f0c91906200adb2565b80516034546040517f5500079d00000000000000000000000000000000000000000000000000000000815292935062001f61926001600160a01b0390911690635500079d90620009529089906004016200ae2b565b62001fa681602001516040518060400160405280601a81526020017f657870656374656420617574686f72697a6564203d207472756500000000000081525062004848565b62001fec8160600151836040518060400160405280601681526020017f657870656374656420677561726420616464726573730000000000000000000081525062004892565b50505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200206157600080fd5b505afa15801562002076573d6000803e3d6000fd5b5050505060006040518060600160405280866001600160a01b03168152602001858152602001848152509050600081604051602001620020b791906200ae2b565b60408051808303601f190181529082905280516020909101206034547f6108c5320000000000000000000000000000000000000000000000000000000083526001600160a01b038a81166004850152602484018390529193506200216e92911690636108c532906044015b602060405180830381865afa15801562002140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200216691906200b076565b600062006a01565b6036546040805160208101869052620021a9928a9286926001600160a01b039092169101604051602081830303815290604052600162006bf5565b6034546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526024820184905262002244921690631c7662c890604401602060405180830381865afa15801562002217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200223d91906200ae40565b8462005f27565b62000c2b878362006e11565b6031546000906200226c906001600160a01b0316600162004c71565b6000815181106200228157620022816200b094565b6020026020010151905060008067ffffffffffffffff811115620022a957620022a96200a5f3565b604051908082528060200260200182016040528015620022d3578160200160208202803683370190505b509050600082604051602001620022eb91906200ae2b565b60408051808303601f190181529082905280516020909101206034546031547f6108c5320000000000000000000000000000000000000000000000000000000084526001600160a01b039081166004850152602484018390529193506200235e92911690636108c5329060440162002122565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f7a933234000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620023e457600080fd5b505af1158015620023f9573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a19694506200245f939092169188919088906004016200ae5a565b600060405180830381865afa1580156200247d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620024a791908101906200af16565b5050603154620024c3906001600160a01b0316846001620064e8565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254f91906200ae40565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152949550909384936001600160a01b03908116936326e0a19693620025b99391909216918b918b906004016200ae5a565b600060405180830381865afa158015620025d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200260191908101906200af16565b60315460408051808201909152602d546001600160a01b039081168252602e5460208301529395509193506200263d921690848460006200546d565b6040517f44d7f0a400000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d906344d7f0a4906024016020604051808303816000875af1158015620026a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026cf91906200b076565b50603154620026e8906001600160a01b03168762006e11565b60315460408051808201909152602d546001600160a01b039081168252602e54602083015262001b3692169084847f7a933234000000000000000000000000000000000000000000000000000000006200546d565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001d8757838290600052602060002001805462002783906200b021565b80601f0160208091040260200160405190810160405280929190818152602001828054620027b1906200b021565b8015620028025780601f10620027d65761010080835404028352916020019162002802565b820191906000526020600020905b815481529060010190602001808311620027e457829003601f168201915b50505050508152602001906001019062002761565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001d875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620028fd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028a95790505b505050505081525050815260200190600101906200283b565b604080516060810182526037546001600160a01b031681527f5a1b0982e87164f04c07f3e34b873c8bd03f31645cb3c70d611c56ca3d37e6b76020808301919091528251908101835260008082529282015290620029789084908390620064e8565b60006200298462006360565b604080516020808201835260008083526034549351949550919391926001600160a01b0316916353f00b149189918591620029c2918991016200b183565b60405160208183030381529060405280519060200120896000801b89604051602001620029f091906200b183565b60408051601f19818403018152600060608401908152608084018352835260208084018f90528383018d90529151909262002a2e929091016200b194565b60408051601f198184030181529082905262002a53979695949392916024016200b1f2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925260345491519093506000925082916001600160a01b03169062002ab99085906200b298565b6000604051808303816000865af19150503d806000811462002af8576040519150601f19603f3d011682016040523d82523d6000602084013e62002afd565b606091505b509150915062002b0e8215620070d1565b62002bf6816314a2a78460e01b8a60008960405160200162002b3191906200b183565b604051602081830303815290604052805190602001208c8c60405160200162002b5b91906200ae2b565b604051602081830303815290604052805190602001208d604001518c8e60405160240162002b919897969594939291906200b2b6565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200714c565b5050505050505050565b600062002c89604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b6034546040517f5500079d0000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635500079d9062002cda9085906004016200ae2b565b602060405180830381865afa15801562002cf8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d1e91906200ae40565b6031549091506001600160a01b031662002d3b81846000620064e8565b6034546040517f4a03c69a0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690634a03c69a9062002d8990859088906004016200ad7d565b608060405180830381865afa15801562002da7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002dcd91906200adb2565b905062002e158160000151846040518060400160405280600d81526020017f68617368206d69736d6174636800000000000000000000000000000000000000815250620047fb565b62002e5a81602001516040518060400160405280601a81526020017f657870656374656420617574686f72697a6564203d207472756500000000000081525062004848565b62002e8781604001516000801b60405180606001604052806026815260200162016f8f60269139620047fb565b62001fec816060015160006040518060400160405280601981526020017f657870656374656420756e73657420737761702067756172640000000000000081525062004892565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002f3d57600080fd5b505afa15801562002f52573d6000803e3d6000fd5b5050505060006040518060600160405280856001600160a01b0316815260200184815260200183815250905060008160405160200162002f9391906200ae2b565b60408051808303601f190181529082905280516020909101206034547f6108c5320000000000000000000000000000000000000000000000000000000083526001600160a01b038981166004850152602484018390529193506200300392911690636108c5329060440162002122565b6200301186836001620064e8565b62001b36868362006e11565b6000620030a6604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b602b54909150620030c3906001600160a01b0316826000620064e8565b6000620030cf62006360565b90506000620031fa7fef1cc318c031f6538ef09fbcfd6bb018a44dd0852d289c0466c29619432b15176040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b90506000603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327891906200ae40565b604080518082018252600c81527f696e76616c69642068617368000000000000000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620032fd91906024016200b32c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262003371916004016200b32c565b600060405180830381600087803b1580156200338c57600080fd5b505af1158015620033a1573d6000803e3d6000fd5b5050603454602b546001600160a01b0391821693506353f00b149250166000620034328786601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856000801b896040516020016200344a91906200b183565b60408051601f19818403018152600060608401908152608084018352835260208084018f9052825191939283019162003486918e91016200b183565b60408051601f19818403018152918152915251620034a891906020016200b194565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401620034db97969594939291906200b1f2565b602060405180830381865afa158015620034f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200351f91906200b254565b5050505050565b604080516060810182526037546001600160a01b0390811682527f5a1b0982e87164f04c07f3e34b873c8bd03f31645cb3c70d611c56ca3d37e6b760208084019190915283519081018452600080825293830152602b5491926200359092909116908390620064e8565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2c7ca6d7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200361657600080fd5b505af11580156200362b573d6000803e3d6000fd5b5050603454602b54604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b0393841695506326e0a19694506200369c93909216918691602481016200ae5a565b600060405180830381865afa158015620036ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000aa891908101906200af16565b6034546040516000916001600160a01b03169062003702906200a538565b6001600160a01b039091168152602001604051809103906000f0801580156200372f573d6000803e3d6000fd5b5090506000620037bb604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b9050620037cb82826000620064e8565b60345460009081906001600160a01b03166326e0a1968585620037ed62006360565b604051602001620037ff91906200b183565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1690915262003853939291602481016200ae5a565b600060405180830381865afa15801562003871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200389b91908101906200af16565b9150915062001fec846001600160a01b0316631626ba7e6200399d85603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200390b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200393191906200ae40565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b846040518363ffffffff1660e01b8152600401620039bd9291906200b341565b602060405180830381865afa158015620039db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a0191906200b254565b7fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000062005f27565b600062003ad3604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b60315490915062003af0906001600160a01b0316826000620064e8565b60345460315460009182916001600160a01b03918216916326e0a19691168562003b1962006360565b60405160200162003b2b91906200b183565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1690915262003b7f939291602481016200ae5a565b600060405180830381865afa15801562003b9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003bc791908101906200af16565b603154603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062000aa8936001600160a01b0392831693631626ba7e936200399d93899391169163f698da259160048083019260209291908290030181865afa1580156200390b573d6000803e3d6000fd5b604080518082018252600080825282516020808201855291815281830152603654835191820185905262000aa8938793879390926001600160a01b03169101620018a1565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001d8757838290600052602060002001805462003cd3906200b021565b80601f016020809104026020016040519081016040528092919081815260200182805462003d01906200b021565b801562003d525780601f1062003d265761010080835404028352916020019162003d52565b820191906000526020600020905b81548152906001019060200180831162003d3457829003601f168201915b50505050508152602001906001019062003cb1565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000ab7946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562003de3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e0991906200ae40565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562003e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e9191906200b35c565b6034546001600160a01b031662007158565b6060600183511162003f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162001326565b600062003f458451620041c7565b67ffffffffffffffff81111562003f605762003f606200a5f3565b60405190808252806020026020018201604052801562003f8a578160200160208202803683370190505b50905060005b60018551111562004071578360011660010362003fee5784600185038151811062003fbf5762003fbf6200b094565b602002602001015182828151811062003fdc5762003fdc6200b094565b60200260200101818152505062004055565b8451846001010362004013576000801b82828151811062003fdc5762003fdc6200b094565b8484600101815181106200402b576200402b6200b094565b60200260200101518282815181106200404857620040486200b094565b6020026020010181815250505b600101600284049350620040698562005d9b565b945062003f90565b5090505b92915050565b60008054610100900460ff16156200409c5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620041c25760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162004144917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200b37c565b60408051601f198184030181529082905262004160916200b298565b6000604051808303816000865af19150503d80600081146200419f576040519150601f19603f3d011682016040523d82523d6000602084013e620041a4565b606091505b5091505080806020019051810190620041be91906200b076565b9150505b919050565b600060018211620041da57506000919050565b60008270010000000000000000000000000000000081106200420b57608093841c936200420890836200b3f5565b91505b6801000000000000000084106200423157604093841c936200422e90836200b3f5565b91505b64010000000084106200425357602093841c936200425090836200b3f5565b91505b6201000084106200427357601093841c936200427090836200b3f5565b91505b61010084106200429257600893841c936200428f90836200b3f5565b91505b60108410620042b057600493841c93620042ad90836200b3f5565b91505b60048410620042ce57600293841c93620042cb90836200b3f5565b91505b60028410620042e757620042e46001836200b3f5565b91505b600081620042f8811960016200b3f5565b16905081811480156200430b5750600083115b156200431a5750909392505050565b620043278360016200b3f5565b95945050505050565b600081831080156200434a57836000528260205262004353565b82600052836020525b5050604060002092915050565b6040805160608101825260008082527fe091ca7485bb6e74431c68b9a6ccbf864608b8c6f29132be33a88d4a4a02ef53602080840191909152835190810184529081528183015290517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8f59fa5000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200442c57600080fd5b505af115801562004441573d6000803e3d6000fd5b50506034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250636bfae1ca9150620044939084906001906004016200b40b565b600060405180830381600087803b158015620044ae57600080fd5b505af11580156200351f573d6000803e3d6000fd5b6060600c80548060200260200160405190810160405280929190818152602001828054801562000d4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d2c575050505050905090565b6000808219600101831683145b83156200454a57600193841c93919091019062004532565b900392915050565b84516040517f4c63e5620000000000000000000000000000000000000000000000000000000081529015156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620045ba57600080fd5b505afa158015620045cf573d6000803e3d6000fd5b5050505060006040518060600160405280856001600160a01b031681526020018481526020018381525090506200462c878660405180604001604052806000815260200160405180602001604052806000815250815250620051f4565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a821464000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620046b257600080fd5b505af1158015620046c7573d6000803e3d6000fd5b50506034546001600160a01b031691506353f00b1490508860007f1e19c368b8e9c45999d9dae49fdaf9f9f10d9fa0e52cff7fab17f0afd87d80b07f26d17eb22ca6b2615b053b942d517a8eb1dc14746ac5059914694f5dd6023a52826200472e62006360565b6040516020016200474091906200b183565b60408051601f198184030181526060830182528f835260208381018c9052825180820184526000815284840152915190926200477f929091016200b194565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401620047b297969594939291906200b1f2565b602060405180830381865afa158015620047d0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bf691906200b254565b905090565b81831462000aa8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200483491906200b431565b60405180910390a162000aa8838362005f27565b8162001b6f577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200487f91906200b431565b60405180910390a162001b6f82620070d1565b816001600160a01b0316836001600160a01b03161462000aa8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620048dd91906200b431565b60405180910390a162000aa8838362007158565b620048fb6200726a565b6025546040516001600160a01b039091169062004918906200a546565b6001600160a01b039091168152602001604051809103906000f08015801562004945573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162004acd94938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562004a06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a2c91906200ae40565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062004ab66200762c565b6031546001600160a01b0316949392919062007706565b60405162004adb906200a554565b604051809103906000f08015801562004af8573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162004b3f906200a562565b604051809103906000f08015801562004b5c573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162004ba3906200a570565b604051809103906000f08015801562004bc0573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560345460405191169062004c09906200a57e565b6001600160a01b039091168152602001604051809103906000f08015801562004c36573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60408051610140810182526021546001600160a01b03908116825260225416602082015260009181018290526001606082810182905260808301919091524260a0830152600260c0830152610e1060e08301526101008201929092527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b41426101208201528267ffffffffffffffff81111562004d105762004d106200a5f3565b60405190808252806020026020018201604052801562004d5f57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162004d2f5790505b50915060005b825181101562004e0e57604080516060810182526038546001600160a01b0316815281516020808201859052919291830191016040516020818303038152906040528051906020012081526020018360405160200162004dc691906200b47a565b60405160208183030381529060405281525083828151811062004ded5762004ded6200b094565b6020026020010181905250808062004e05906200b514565b91505062004d65565b508051602a54606083015160c084015162004efc93926000927f095ea7b300000000000000000000000000000000000000000000000000000000926001600160a01b039092169162004e6191906200b54f565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062004ee76200762c565b6001600160a01b038a16949392919062007706565b5092915050565b60408051606081810183526000808352602083018190529282018190529060005b885181101562004ff35788818151811062004f435762004f436200b094565b602002602001015187600062004f758c858151811062004f675762004f676200b094565b60200260200101516200792d565b81526020808201929092526040908101600020835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178155918301516001830155820151600282019062004fd990826200b5b3565b50905050808062004fea906200b514565b91505062004f24565b506000885167ffffffffffffffff8111156200501357620050136200a5f3565b6040519080825280602002602001820160405280156200503d578160200160208202803683370190505b50905060005b89518110156200509b57620050668a828151811062004f675762004f676200b094565b8282815181106200507b576200507b6200b094565b60209081029190910101528062005092816200b514565b91505062005043565b506000620050a9826200797c565b90506000620050bb828963ffffffff16565b90506000620050ce838c8a63ffffffff16565b905060008a6000858e81518110620050ea57620050ea6200b094565b602002602001015181526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201805462005156906200b021565b80601f016020809104026020016040519081016040528092919081815260200182805462005184906200b021565b8015620051d55780601f10620051a957610100808354040283529160200191620051d5565b820191906000526020600020905b815481529060010190602001808311620051b757829003601f168201915b5050509190925250949f939e50909c50919a5050505050505050505050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200526357600080fd5b505af115801562005278573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620052f857600080fd5b505af11580156200530d573d6000803e3d6000fd5b50505050826001600160a01b03167f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e5783836040516200534e9291906200b6dd565b60405180910390a26034546040517f1ab0dd9d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631ab0dd9d90620053a390859085906004016200b6dd565b600060405180830381600087803b158015620053be57600080fd5b505af1158015620053d3573d6000803e3d6000fd5b50506034546040517fa45468760000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015262000aa89450909116915063a454687690602401602060405180830381865afa15801562005440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200546691906200ae40565b8362005f27565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525090506000620055c8620055c083602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200390b573d6000803e3d6000fd5b879062007a9d565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200563d57600080fd5b505af115801562005652573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af1158015620056ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056f091906200b076565b506040805160028082526060820183526000926020830190803683370190505090508560000151816000815181106200572d576200572d6200b094565b60200260200101906001600160a01b031690816001600160a01b0316815250508560200151816001815181106200576857620057686200b094565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183526000939192909183019080368337019050509050836060015181600081518110620057be57620057be6200b094565b602002602001018181525050836080015181600181518110620057e557620057e56200b094565b602090810291909101015260408051600280825260608201909252600091816020015b62005878604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b81526020019060019003908162005808579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e001518152602001620059008a600262007bc7565b8152602001896060015181526020018b89604051602001620059249291906200b6f8565b604051602081830303815290604052815250816000815181106200594c576200594c6200b094565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e001518152602001620059c687600062007bc7565b8152602001866060015181526020018581525081600181518110620059ef57620059ef6200b094565b602002602001018190525060006040518060600160405280600067ffffffffffffffff81111562005a245762005a246200a5f3565b60405190808252806020026020018201604052801562005a7357816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162005a435790505b508152602001600060405190808252806020026020018201604052801562005aca57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162005a9a5790505b508152602001600060405190808252806020026020018201604052801562005b2157816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162005af15790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562005b9a57600080fd5b505af115801562005baf573d6000803e3d6000fd5b5050507fffffffff000000000000000000000000000000000000000000000000000000008816905062005c67576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b9062005c2d9087908790879087906004016200b7fa565b600060405180830381600087803b15801562005c4857600080fd5b505af115801562005c5d573d6000803e3d6000fd5b5050505062005d8e565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562005cef57600080fd5b505af115801562005d04573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b915062005d599087908790879087906004016200b7fa565b600060405180830381600087803b15801562005d7457600080fd5b505af115801562005d89573d6000803e3d6000fd5b505050505b5050505050505050505050565b6060806000835190508060011660010362005e58576002810460010167ffffffffffffffff81111562005dd25762005dd26200a5f3565b60405190808252806020026020018201604052801562005dfc578160200160208202803683370190505b50915062005e2d84600183038151811062005e1b5762005e1b6200b094565b60200260200101516000801b62004330565b8260018451038151811062005e465762005e466200b094565b60200260200101818152505062005ea5565b6002810467ffffffffffffffff81111562005e775762005e776200a5f3565b60405190808252806020026020018201604052801562005ea1578160200160208202803683370190505b5091505b6000805b6001830381101562005f1d5762005eee86828151811062005ece5762005ece6200b094565b602002602001015187836001018151811062001c635762001c636200b094565b84838151811062005f035762005f036200b094565b602090810291909101015260019091019060020162005ea9565b5091949350505050565b80821462001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162005fb59060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162005fee91906200b95a565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99816040516200602791906200b9a6565b60405180910390a162001b6f62007d14565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620060a857600080fd5b505af1158015620060bd573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200613d57600080fd5b505af115801562006152573d6000803e3d6000fd5b50505050846001600160a01b03167f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e578585604051620061939291906200b6dd565b60405180910390a26034546040517f57f1d41a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906357f1d41a90620061ec9087908790879087906004016200b9e4565b600060405180830381600087803b1580156200620757600080fd5b505af11580156200621c573d6000803e3d6000fd5b50506034546040517fa45468760000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152620062b69450909116915063a454687690602401602060405180830381865afa15801562006289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062af91906200ae40565b8562005f27565b6034546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152600060248301526200351f921690631c7662c890604401602060405180830381865afa15801562006324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200634a91906200ae40565b828060200190518101906200147891906200ae40565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152620047f67fdfe0aea12481b6861fe85f311f9e24a0b5f7886a445111af3b17dccfa27d99656040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200655757600080fd5b505af11580156200656c573d6000803e3d6000fd5b50505050801562006650576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620065f357600080fd5b505af115801562006608573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516200664791906200ae2b565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca906200669d90859085906004016200b40b565b600060405180830381600087803b158015620066b857600080fd5b505af1158015620066cd573d6000803e3d6000fd5b505060345460405162000aa893506001600160a01b039091169150636108c532908690620067009087906020016200ae2b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401620067489291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200678c91906200b076565b600162006a01565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200680357600080fd5b505af115801562006818573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200689857600080fd5b505af1158015620068ad573d6000803e3d6000fd5b50506040516001600160a01b038481168252851692507f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859915060200160405180910390a26034546040517f8f7984ed0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690638f7984ed90602401600060405180830381600087803b1580156200695257600080fd5b505af115801562006967573d6000803e3d6000fd5b50506034546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015262001b6f9450909116915063595001b290602401602060405180830381865afa158015620069d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069fa91906200b35c565b8262007158565b8015158215151462001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162006a939060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262006afe576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062006b35565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162006b4491906200ba22565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162006baf576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062006be6565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b6040516200602791906200ba74565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562006c6457600080fd5b505af115801562006c79573d6000803e3d6000fd5b50505050801562006d5d576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562006d0057600080fd5b505af115801562006d15573d6000803e3d6000fd5b50505050846001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618560405162006d5491906200ae2b565b60405180910390a25b6034546040517f0d0d98000000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690630d0d98009062006dae9087908790879087906004016200bab2565b600060405180830381600087803b15801562006dc957600080fd5b505af115801562006dde573d6000803e3d6000fd5b50506034546040516200351f93506001600160a01b039091169150636108c532908890620067009089906020016200ae2b565b60008160405160200162006e2691906200ae2b565b60408051808303601f190181529082905280516020909101206034547f1c7662c80000000000000000000000000000000000000000000000000000000083526001600160a01b03868116600485015260248401839052919350600092911690631c7662c890604401602060405180830381865afa15801562006eac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ed291906200ae40565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562006f4457600080fd5b505af115801562006f59573d6000803e3d6000fd5b50506034546040517f95bc2673000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911692506395bc26739150602401600060405180830381600087803b15801562006fbd57600080fd5b505af115801562006fd2573d6000803e3d6000fd5b50506034546040517f6108c5320000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018790526200702e94509091169150636108c5329060440162002122565b801562001fec576034546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820185905262001fec921690631c7662c890604401602060405180830381865afa158015620070a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070c991906200ae40565b600062005f27565b8062007149577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620071379060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200714962007d14565b50565b62001b6f828262007e5b565b806001600160a01b0316826001600160a01b03161462001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620071f89060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200723191906200bafe565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f816040516200602791906200bb53565b6200727462007f64565b620072b46040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062008396565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620073379062008396565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620073ba9062008396565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462007419929182169116683635c9adc5dea000006200851c565b602254602d5462007441916001600160a01b039081169116683635c9adc5dea000006200851c565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b0316918391506000906200748757620074876200b094565b6001600160a01b039283166020918202929092010152602d54825191169082906001908110620074bb57620074bb6200b094565b6001600160a01b039283166020918202929092010152602f54825191169082906002908110620074ef57620074ef6200b094565b6001600160a01b039283166020918202929092010152601c54601b54601e546200752993928316929182169185916002911660006200852b565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200758193928316929182169185916002911660016200852b565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620075d8939283169291821691859160029116816200852b565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462007149929182169116683635c9adc5dea000006200851c565b604080516002808252606082810190935260009190816020015b60408051808201909152600080825260208201528152602001906001900390816200764657505060408051808201909152602b546001600160a01b03168152602c5460208201528151919250908290600090620076a757620076a76200b094565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e5491810191909152815182906001908110620076f057620076f06200b094565b602002602001018190525062004075816200862f565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776d91906200ae40565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620077b49a999897969594939291906200bbfc565b602060405180830381865afa158015620077d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620077f891906200ae40565b905062007805836200862f565b9250606060005b845181101562007882578162007848848784815181106200783157620078316200b094565b602002602001015162007a9d90919063ffffffff16565b6040516020016200785b9291906200bc73565b6040516020818303038152906040529150808062007879906200b514565b9150506200780c565b50886001600160a01b0316636a7612028989898960008060008060008b604051602001620078b191906200b298565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620078e79a999897969594939291906200bca6565b6020604051808303816000875af115801562007907573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200128a91906200b076565b6000816040516020016200794291906200ae2b565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050919050565b606060005b825181101562007a965760006200799a8260016200b3f5565b90505b835181101562007a8057838181518110620079bc57620079bc6200b094565b6020026020010151848381518110620079d957620079d96200b094565b6020026020010151111562007a6b576000848381518110620079ff57620079ff6200b094565b6020026020010151905084828151811062007a1e5762007a1e6200b094565b602002602001015185848151811062007a3b5762007a3b6200b094565b6020026020010181815250508085838151811062007a5d5762007a5d6200b094565b602002602001018181525050505b8062007a77816200b514565b9150506200799d565b508062007a8d816200b514565b91505062007981565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562007b1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b4491906200bd2d565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc8361010001510362007bfa576001175b8261012001511562007c0a576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328361014001510362007c405760081762007c71565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce8361014001510362007c7157600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce8361016001510362007ca2576010175b600182600381111562007cb95762007cb96200bb91565b0362007cc85760201762004075565b600282600381111562007cdf5762007cdf6200bb91565b0362007cee5760401762004075565b600382600381111562007d055762007d056200bb91565b03620040755760601792915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562007e2d5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262007dc892916020016200b37c565b60408051601f198184030181529082905262007de4916200b298565b6000604051808303816000865af19150503d806000811462007e23576040519150601f19603f3d011682016040523d82523d6000602084013e62007e28565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62007e67828262008761565b62001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007ef29060208082526023908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f65735d0000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf188260405162007f2b91906200ba22565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18816040516200602791906200ba74565b62007fa46040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062008396565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620080279062008396565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c74000000000000000000000000000000000000000000000091810191909152620080aa906200882a565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051600090620080f3906200a58c565b604051809103906000f08015801562008110573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b1580156200817457600080fd5b505af115801562008189573d6000803e3d6000fd5b50506024546040518493506001600160a01b039091169150620081ac906200a59a565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620081e0573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa1580156200826d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200829391906200b35c565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200833157600080fd5b505af115801562008346573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b8915060240162004493565b6040805180820190915260008082526020820152600082604051602001620083bf91906200b298565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562008444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200846a91906200b35c565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620084c190849088906004016200bd6c565b600060405180830381600087803b158015620084dc57600080fd5b505af1158015620084f1573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b62000aa8838383600062008837565b6000866001600160a01b0316631688f0b98763b63e800d60e01b888860008960008060006040516024016200856797969594939291906200bd90565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252620085de929187906004016200bdfa565b6020604051808303816000875af1158015620085fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200862491906200b35c565b979650505050505050565b606060005b825181101562007a965760006200864d8260016200b3f5565b90505b83518110156200874b578381815181106200866f576200866f6200b094565b6020026020010151600001516001600160a01b03168483815181106200869957620086996200b094565b6020026020010151600001516001600160a01b0316111562008736576000848381518110620086cc57620086cc6200b094565b60200260200101519050848281518110620086eb57620086eb6200b094565b60200260200101518584815181106200870857620087086200b094565b6020026020010181905250808583815181106200872957620087296200b094565b6020026020010181905250505b8062008742816200b514565b91505062008650565b508062008758816200b514565b91505062008634565b805182516001919003620088215760005b83518110156200881a578281815181106200879157620087916200b094565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110620087d357620087d36200b094565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146200880557600091505b8062008811816200b514565b91505062008772565b5062004075565b50600092915050565b600062004efc8262008ac4565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790529151600092871691620088bb916200b298565b6000604051808303816000865af19150503d8060008114620088fa576040519150601f19603f3d011682016040523d82523d6000602084013e620088ff565b606091505b509150506000818060200190518101906200891b91906200ae40565b90506200896e846200896787620089607f70a08231000000000000000000000000000000000000000000000000000000006200895960058d62008c12565b9062008c52565b9062008c8b565b9062008cb4565b821562001b365760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b03891691620089e791906200b298565b6000604051808303816000865af19150503d806000811462008a26576040519150601f19603f3d011682016040523d82523d6000602084013e62008a2b565b606091505b5091505060008180602001905181019062008a4791906200ae40565b90508286101562008a725762008a5e86846200be2e565b62008a6a90826200be2e565b905062008a8d565b62008a7e83876200be2e565b62008a8a90826200b3f5565b90505b62002bf681620089677f18160ddd000000000000000000000000000000000000000000000000000000006200895960058d62008c12565b6000808260405160200162008ada91906200b298565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562008b5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008b8291906200b35c565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062008bd990859087906004016200bd6c565b600060405180830381600087803b15801562008bf457600080fd5b505af115801562008c09573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262008c4b565b6002820180546001810182556000918252602082206001600160a01b0384169101558262008c4b565b62001b6f8282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562008d2d57602002820191906000526020600020905b81548152602001906001019080831162008d18575b5050505050905060008362008d42836200918e565b60405160200162008d559291906200b37c565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a16835281529281209194509092909162008dc19186918891016200be44565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662008dfc5762008dfa876200923b565b505b6001600160a01b0385166000908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519091839162008e559187918991016200be44565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162008e9c91906200b298565b600060405180830381855afa9150503d806000811462008ed9576040519150601f19603f3d011682016040523d82523d6000602084013e62008ede565b606091505b50915062008efb90508162008ef58860206200b54f565b62009248565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562008f7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008fa191906200ae40565b905080821462009080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001326565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620090fd57600080fd5b505af115801562009112573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200917a60028b0160006200a5a8565b896004016000905550505050505050505050565b6060600082516020620091a291906200b54f565b67ffffffffffffffff811115620091bd57620091bd6200a5f3565b6040519080825280601f01601f191660200182016040528015620091e8576020820181803683370190505b50905060005b835181101562004efc5760008482815181106200920f576200920f6200b094565b60200260200101519050808260200260200184015250808062009232906200b514565b915050620091ee565b60006200407582620092ea565b600080600060208551116200925f57845162009262565b60205b905060005b81811015620092e0576200927d8160086200b54f565b866200928a83886200b3f5565b815181106200929d576200929d6200b094565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620092d7816200b514565b91505062009267565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200935c57602002820191906000526020600020905b81548152602001906001019080831162009347575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905195965094919350620093c0925085918791016200be44565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562009477576001600160a01b0384166000908152602087815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909291620094479185918791016200be44565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009485836200a3e5565b604051602001620094989291906200b37c565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200950857600080fd5b505af11580156200951d573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200953e91906200b298565b600060405180830381855afa9150503d80600081146200957b576040519150601f19603f3d011682016040523d82523d6000602084013e62009580565b606091505b5091506200959d905081620095978760206200b54f565b6200a492565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562009618573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200964291908101906200bee2565b509050805160010362009a745760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200969a576200969a6200b094565b60200260200101516040518363ffffffff1660e01b8152600401620096d49291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620096f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200971891906200ae40565b90508062009783577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200975857620097586200b094565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462009860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001326565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620098989291906200be44565b6040516020818303038152906040528051906020012085600081518110620098c457620098c46200b094565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1816000815181106200993657620099366200b094565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262009999918a918c91016200be44565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162009a1b918a918c91016200be44565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200a1dd565b6001815111156200a1525760005b81518110156200a14b5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062009ad65762009ad66200b094565b60200260200101516040518363ffffffff1660e01b815260040162009b109291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009b5491906200ae40565b90508062009bbe577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062009b935762009b936200b094565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062009c065762009c066200b094565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b15801562009c9657600080fd5b505af115801562009cab573d6000803e3d6000fd5b50505050600060608a6001600160a01b03168760405162009ccd91906200b298565b600060405180830381855afa9150503d806000811462009d0a576040519150601f19603f3d011682016040523d82523d6000602084013e62009d0f565b606091505b50909250905062009d2781620095978b60206200b54f565b955081801562009d5657507f133700000000000000000000000000000000000000000000000000000000000086145b156200a060577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162009d949291906200be44565b6040516020818303038152906040528051906020012088888151811062009dbf5762009dbf6200b094565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062009e305762009e306200b094565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f168352845280822090519293909262009e93918d918f91016200be44565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162009f4a9291906200be44565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062009fcd5762009fcd6200b094565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a03e57600080fd5b505af11580156200a053573d6000803e3d6000fd5b505050505050506200a14b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200a0a8576200a0a86200b094565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a11957600080fd5b505af11580156200a12e573d6000803e3d6000fd5b5050505050505080806200a142906200b514565b91505062009a82565b506200a1dd565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162001326565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200a2399188918a91016200be44565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a2f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162001326565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200a35460028a0160006200a5a8565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200a3b29188918a91016200be44565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a3f991906200b54f565b67ffffffffffffffff8111156200a414576200a4146200a5f3565b6040519080825280601f01601f1916602001820160405280156200a43f576020820181803683370190505b50905060005b835181101562004efc5760008482815181106200a466576200a4666200b094565b6020026020010151905080826020026020018401525080806200a489906200b514565b9150506200a445565b600080600060208551116200a4a95784516200a4ac565b60205b905060005b81811015620092e0576200a4c78160086200b54f565b866200a4d483886200b3f5565b815181106200a4e7576200a4e76200b094565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200a521816200b514565b9150506200a4b1565b610306806200bf4483390190565b610b98806200c24a83390190565b61237a806200cde283390190565b61013c806200f15c83390190565b610809806200f29883390190565b610200806200faa183390190565b611246806200fca183390190565b610d068062010ee783390190565b6153a28062011bed83390190565b50805460008255906000526020600020908101906200714991905b808211156200a5d957600081556001016200a5c3565b5090565b6001600160a01b03811681146200714957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200a649576200a6496200a5f3565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200a67b576200a67b6200a5f3565b604052919050565b600067ffffffffffffffff8211156200a6a0576200a6a06200a5f3565b50601f01601f191660200190565b600082601f8301126200a6c057600080fd5b81356200a6d76200a6d1826200a683565b6200a64f565b8181528460208386010111156200a6ed57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156200a72157600080fd5b84356200a72e816200a5dd565b935060208501356200a740816200a5dd565b925060408501359150606085013567ffffffffffffffff8111156200a76457600080fd5b6200a772878288016200a6ae565b91505092959194509250565b6000602082840312156200a79157600080fd5b5035919050565b60005b838110156200a7b55781810151838201526020016200a79b565b50506000910152565b600081518084526200a7d88160208601602086016200a798565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200432760608301846200a7be565b600081518084526020808501945080840160005b838110156200a8515781516001600160a01b0316875295820195908201906001016200a82a565b509495945050505050565b60208152600062008c4b60208301846200a816565b600067ffffffffffffffff8211156200a88e576200a88e6200a5f3565b5060051b60200190565b600082601f8301126200a8aa57600080fd5b813560206200a8bd6200a6d1836200a871565b82815260059290921b840181019181810190868411156200a8dd57600080fd5b8286015b848110156200a8fa57803583529183019183016200a8e1565b509695505050505050565b6000602082840312156200a91857600080fd5b813567ffffffffffffffff8111156200a93057600080fd5b6200a93e848285016200a898565b949350505050565b60008060008060008060c087890312156200a96057600080fd5b86356200a96d816200a5dd565b9550602087013567ffffffffffffffff808211156200a98b57600080fd5b6200a9998a838b016200a898565b965060408901359550606089013591506200a9b4826200a5dd565b9093506080880135925060a088013590808211156200a9d257600080fd5b506200a9e189828a016200a6ae565b9150509295509295509295565b600080604083850312156200aa0257600080fd5b82356200aa0f816200a5dd565b946020939093013593505050565b6000806000606084860312156200aa3357600080fd5b83359250602084013567ffffffffffffffff8111156200aa5257600080fd5b6200aa60868287016200a898565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200ab4f578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200ab395783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200aaf5565b50978a019795505050918701916001016200aa99565b50919998505050505050505050565b600080600080600060a086880312156200ab7757600080fd5b85356200ab84816200a5dd565b945060208601356200ab96816200a5dd565b935060408601359250606086013567ffffffffffffffff8111156200abba57600080fd5b6200abc8888289016200a6ae565b95989497509295608001359392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200ac51577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200ac3e8583516200a7be565b945092850192908501906001016200ac01565b5092979650505050505050565b6000806000606084860312156200ac7457600080fd5b83356200ac81816200a5dd565b95602085013595506040909401359392505050565b600080604083850312156200acaa57600080fd5b823567ffffffffffffffff8111156200acc257600080fd5b6200acd0858286016200a898565b95602094909401359450505050565b600081518084526020808501945080840160005b838110156200a851578151875295820195908201906001016200acf3565b60208152600062008c4b60208301846200acdf565b600080604083850312156200ad3a57600080fd5b50508035926020909101359150565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200a93e60608501826200a7be565b6001600160a01b03831681526040602082015260006200a93e60408301846200ad49565b80518015158114620041c257600080fd5b6000608082840312156200adc557600080fd5b6040516080810181811067ffffffffffffffff821117156200adeb576200adeb6200a5f3565b604052825181526200ae00602084016200ada1565b60208201526040830151604082015260608301516200ae1f816200a5dd565b60608201529392505050565b60208152600062008c4b60208301846200ad49565b6000602082840312156200ae5357600080fd5b5051919050565b6001600160a01b03851681526080602082015260006200ae7e60808301866200ad49565b82810360408401526200ae9281866200a7be565b905082810360608401526200862481856200acdf565b8051620041c2816200a5dd565b805163ffffffff81168114620041c257600080fd5b600082601f8301126200aedc57600080fd5b81516200aeed6200a6d1826200a683565b8181528460208386010111156200af0357600080fd5b6200a93e8260208301602087016200a798565b6000808284036101a08112156200af2c57600080fd5b610180808212156200af3d57600080fd5b6200af476200a622565b91506200af54856200aea8565b82526200af64602086016200aea8565b60208301526200af77604086016200aea8565b604083015260608501516060830152608085015160808301526200af9e60a086016200aeb5565b60a083015260c085015160c083015260e085015160e08301526101008086015181840152506101206200afd38187016200ada1565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156200b00957600080fd5b6200b017858286016200aeca565b9150509250929050565b600181811c908216806200b03657607f821691505b6020821081036200b070577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156200b08957600080fd5b62008c4b826200ada1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516001600160a01b0316825260208101516200b0eb60208401826001600160a01b03169052565b5060408101516200b10760408401826001600160a01b03169052565b50606081015160608301526080810151608083015260a08101516200b13460a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516200b16a8285018215159052565b5050610140818101519083015261016090810151910152565b61018081016200407582846200b0c3565b6020815260008251606060208401526200b1b260808401826200acdf565b90506020840151601f19808584030160408601526200b1d283836200ad49565b92506040860151915080858403016060860152506200432782826200a7be565b60006001600160a01b03808a16835280891660208401525086604083015285606083015284608083015260e060a08301526200b23260e08301856200a7be565b82810360c08401526200b24681856200a7be565b9a9950505050505050505050565b6000602082840312156200b26757600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462008c4b57600080fd5b600082516200b2ac8184602087016200a798565b9190910192915050565b60006102606001600160a01b03808c168452808b166020850152508860408401528760608401528660808401528060a08401526200b2f7818401876200a7be565b905082810360c08401526200b30d81866200a7be565b9150506200b31f60e08301846200b0c3565b9998505050505050505050565b60208152600062008c4b60208301846200a7be565b8281526040602082015260006200a93e60408301846200a7be565b6000602082840312156200b36f57600080fd5b815162008c4b816200a5dd565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200b3b88160048501602087016200a798565b919091016004019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156200407557620040756200b3c6565b6040815260006200b42060408301856200ad49565b905082151560208301529392505050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062008c4b60808301846200a7be565b81516001600160a01b03168152610140810160208301516200b4a760208401826001600160a01b03169052565b5060408301516200b4c360408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200b548576200b5486200b3c6565b5060010190565b80820281158282048414176200407557620040756200b3c6565b601f82111562000aa857600081815260208120601f850160051c810160208610156200b5925750805b601f850160051c820191505b8181101562001b36578281556001016200b59e565b815167ffffffffffffffff8111156200b5d0576200b5d06200a5f3565b6200b5e8816200b5e184546200b021565b846200b569565b602080601f8311600181146200b63e57600084156200b6075750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855562001b36565b600085815260208120601f198616915b828110156200b66f578886015182559484019460019091019084016200b64e565b50858210156200b6ac57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8051825260006020820151604060208501526200a93e60408501826200a7be565b8281526040602082015260006200a93e60408301846200b6bc565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b168152600082516200b7378160148501602087016200a798565b919091016014019392505050565b6000826060808201846000805b60038110156200b7ed578584038952825180518086526020918201918087019190600582901b88018101865b838110156200b7d557898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c90526200b7c18c8401826200a7be565b96840196958401959250506001016200b77e565b509c81019c975095909501945050506001016200b752565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b838110156200b8405781516001600160a01b0316855293820193908201906001016200b819565b5050868303818801526200b855838b6200acdf565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b838110156200b93257601f198884030185528151610160815185528782015188860152888201516200b8b78a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e0808301519086015261010080830151908601526101208083015190860152610140918201519185018190526200b91d818601836200a7be565b9688019694505050908501906001016200b87b565b505089810360608b01526200b948818c6200b745565b9e9d5050505050505050505050505050565b6040815260006200b99860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200b99860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b8481526080602082015260006200b9ff60808301866200b6bc565b6001600160a01b038516604084015282810360608401526200862481856200a7be565b6040815260006200ba6060408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200a93e81856200a7be565b6040815260006200ba6060408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6080815260006200bac760808301876200ad49565b6001600160a01b038616602084015282810360408401526200baea81866200a7be565b915050821515606083015295945050505050565b6040815260006200bb3c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200bb3c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106200bbf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c60208501528160408501526200bc288285018d6200a7be565b92506200bc39606085018c6200bbc0565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200bc878184602088016200a798565b8351908301906200bc9d8183602088016200a798565b01949350505050565b60006101406001600160a01b03808e1684528c60208501528160408501526200bcd28285018d6200a7be565b91506200bce3606085018c6200bbc0565b8960808501528860a08501528760c085015280871660e0850152808616610100850152508281036101208401526200bd1c81856200a7be565b9d9c50505050505050505050505050565b6000806000606084860312156200bd4357600080fd5b835160ff811681146200bd5557600080fd5b602085015160409095015190969495509392505050565b6001600160a01b03831681526040602082015260006200a93e60408301846200a7be565b60006101008083526200bda68184018b6200a816565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200be1e60608301856200a7be565b9050826040830152949350505050565b818103818111156200407557620040756200b3c6565b825160009082906020808701845b838110156200be70578151855293820193908201906001016200be52565b5050948252509092019392505050565b600082601f8301126200be9257600080fd5b815160206200bea56200a6d1836200a871565b82815260059290921b840181019181810190868411156200bec557600080fd5b8286015b848110156200a8fa57805183529183019183016200bec9565b600080604083850312156200bef657600080fd5b825167ffffffffffffffff808211156200bf0f57600080fd5b6200bf1d868387016200be80565b935060208501519150808211156200bf3457600080fd5b506200b017858286016200be8056fe608060405234801561001057600080fd5b5060405161030638038061030683398101604081905261002f91610037565b600055610050565b60006020828403121561004957600080fd5b5051919050565b6102a78061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e61004936600461012b565b610075565b604051901515815260200160405180910390f35b61004e610070366004610174565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054610120906060880135610236565b159695505050505050565b60006020828403121561013d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461016d57600080fd5b9392505050565b60008060008060008587036101e081121561018e57600080fd5b6101808082121561019e57600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101c357600080fd5b908701906060828a0312156101d757600080fd5b9093506101c087013590808211156101ee57600080fd5b818801915088601f83011261020257600080fd5b81358181111561021157600080fd5b89602082850101111561022357600080fd5b9699959850939650602001949392505050565b60008261026c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fea26469706673582212205dfaf57d0502300f4f46fee2111ad23463fa3ccb371e514ca536b55c2f60166364736f6c6343000813003360a060405234801561001057600080fd5b50604051610b98380380610b9883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b016100976000396000818160890152818160f101526102490152610b016000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631626ba7e1461003b5780638b0f483414610084575b600080fd5b61004e610049366004610449565b6100d0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ab7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007b565b6000806000838060200190518101906100e991906106ee565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e91906107e8565b90508561021084837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b14610247576040517f0af806e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166353f00b14303389856000801b8960405160200161029c9190610801565b604051602081830303815290604052896040516020016102bc9190610939565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016102ed9796959493929190610a17565b602060405180830381865afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190610a82565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561038a5761038a610338565b60405290565b604051610180810167ffffffffffffffff8111828210171561038a5761038a610338565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103fb576103fb610338565b604052919050565b600067ffffffffffffffff82111561041d5761041d610338565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561045c57600080fd5b82359150602083013567ffffffffffffffff81111561047a57600080fd5b8301601f8101851361048b57600080fd5b803561049e61049982610403565b6103b4565b8181528660208385010111156104b357600080fd5b816020840160208301376000602083830101528093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b8051610503816104d3565b919050565b805163ffffffff8116811461050357600080fd5b8051801515811461050357600080fd5b60005b8381101561054757818101518382015260200161052f565b50506000910152565b600082601f83011261056157600080fd5b815161056f61049982610403565b81815284602083860101111561058457600080fd5b61059582602083016020870161052c565b949350505050565b6000606082840312156105af57600080fd5b6105b7610367565b905081516105c4816104d3565b815260208281015190820152604082015167ffffffffffffffff8111156105ea57600080fd5b6105f684828501610550565b60408301525092915050565b60006060828403121561061457600080fd5b61061c610367565b9050815167ffffffffffffffff8082111561063657600080fd5b818401915084601f83011261064a57600080fd5b815160208282111561065e5761065e610338565b8160051b61066d8282016103b4565b928352848101820192828101908985111561068757600080fd5b958301955b848710156106a55786518252958301959083019061068c565b87525050858101519350828411156106bc57600080fd5b6106c88785880161059d565b908501525060408401519150808211156106e157600080fd5b506105f684828501610550565b6000808284036101a081121561070357600080fd5b6101808082121561071357600080fd5b61071b610390565b9150610726856104f8565b8252610734602086016104f8565b6020830152610745604086016104f8565b6040830152606085015160608301526080850151608083015261076a60a08601610508565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012061079d81870161051c565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156107d257600080fd5b6107de85828601610602565b9150509250929050565b6000602082840312156107fa57600080fd5b5051919050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610847602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161086f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161089b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108d08285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6000815180845261090781602086016020860161052c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b8083101561097e578351825292840192600192909201919084019061095e565b508387015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091508186820301604087015273ffffffffffffffffffffffffffffffffffffffff8351168152838301518482015260408301519350606060408201526109ef60608201856108ef565b935050604086015191508085840301606086015250610a0e82826108ef565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a0830152610a6260e08301856108ef565b82810360c0840152610a7481856108ef565b9a9950505050505050505050565b600060208284031215610a9457600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610ac457600080fd5b939250505056fea2646970667358221220a3f10e64462f999b7cb9a5828ea8e7a4173e75ba07dbbc1415b24cc0e08041d564736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c634300081300336578706563746564207a65726f20636162696e657420666f7220706c61696e20637265617465a2646970667358221220a61485558bc5d9fefd3a35245ceb3d322c5416046c66acef1ed9d05a933425ff64736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"384:22060:97:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:29;;;;;;;;;;;384:22060:97;;;;;;;;;;1168:10:99;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:99;:22;;-1:-1:-1;;;;;;1156:22:99;-1:-1:-1;;;;;1156:22:99;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:99;:32;;-1:-1:-1;;;;;;1188:32:99;-1:-1:-1;;;;;1188:32:99;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:99;:44;;-1:-1:-1;;;;;;1230:44:99;-1:-1:-1;;;;;1230:44:99;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:99;:42;;-1:-1:-1;;;;;;1323:42:99;-1:-1:-1;;;;;1323:42:99;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:99;:27;;-1:-1:-1;;;;;;1375:27:99;-1:-1:-1;;;;;1375:27:99;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:99;:37;;-1:-1:-1;;;;;;1412:37:99;-1:-1:-1;;;;;1412:37:99;;;;;;;;;;875:30:100;;;;;:::i;:::-;317:2:105;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:105;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:105;501:19;;494:33;559:3;544:19;875:30:100;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:100;:56;;-1:-1:-1;;;;;;851:56:100;-1:-1:-1;;;;;851:56:100;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:105;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:105;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:105;1061:19;;1054:33;1119:3;1104:19;941:30:100;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:100;:56;;-1:-1:-1;;;;;;917:56:100;-1:-1:-1;;;;;917:56:100;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:105;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:105;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:105;1621:19;;1614:33;1679:3;1664:19;1007:30:100;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:100;:56;;-1:-1:-1;;;;;;983:56:100;-1:-1:-1;;;;;983:56:100;;;;;;;;;;384:22060:97;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:105:-;384:22060:97;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620003b55760003560e01c8063916a17c611620001f9578063b86161951162000119578063dd6345ec11620000af578063e27d51531162000086578063e27d51531462000786578063ee692c5f146200079d578063fa7626d414620007b4578063fbfa77cf14620007c257600080fd5b8063dd6345ec146200075e578063dfe274a91462000768578063e20c9f71146200077c57600080fd5b8063c80916d411620000f0578063c80916d41462000708578063cf06c7b7146200071c578063d21220a71462000733578063dd1d2599146200074757600080fd5b8063b861619514620006c4578063ba414fa614620006ea578063c45a015514620006f457600080fd5b8063a3dc493d116200018f578063b379f91a1162000166578063b379f91a1462000685578063b5508aa9146200069c578063b62654fb14620006a6578063b716db6614620006ba57600080fd5b8063a3dc493d146200065d578063aade11821462000667578063ad9b0475146200067157600080fd5b80639e3791ff11620001d05780639e3791ff146200061e5780639fbcc9ad1462000635578063a19a98891462000649578063a3d50ac5146200065357600080fd5b8063916a17c614620005f3578063945602ce14620005fd5780639658be6c146200061457600080fd5b806334d17a7011620002e557806366d9a9a0116200027b5780637d499aa411620002525780637d499aa414620005a85780637db2a8ba14620005bc5780638406c07914620005c657806385226c8114620005da57600080fd5b806366d9a9a0146200056e5780636f6649a6146200058757806370af4cdb146200059157600080fd5b80633e5e3c2311620002bc5780633e5e3c23146200051e5780633f7286f4146200052857806351160630146200053257806358161a42146200054657600080fd5b806334d17a7014620004e657806336a7d48214620004f05780633ba95806146200050757600080fd5b80631ed7831c116200035b5780632c434b9811620003325780632c434b9814620004955780632e08d602146200049f578063329696ac14620004c5578063345e8d4a14620004cf57600080fd5b80631ed7831c146200045457806325be124e146200046d578063294402cc146200048157600080fd5b80630c8548f511620003905780630c8548f514620003e75780630dfe16811462000418578063151bcd2c146200042c57600080fd5b806306c30b3a14620003ba5780630a9254e414620003c65780630aa9352914620003d0575b600080fd5b620003c4620007d6565b005b620003c462000aad565b620003c4620003e13660046200a70a565b62000ab9565b603354620003fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620003fb906001600160a01b031681565b620004436200043d3660046200a77e565b62000c34565b6040516200040f939291906200a7ec565b6200045e62000cf1565b6040516200040f91906200a85c565b602354620003fb906001600160a01b031681565b601f54620003fb906001600160a01b031681565b620003c462000d55565b620004b6620004b03660046200a905565b62001296565b6040519081526020016200040f565b620003c462001372565b620003c4620004e03660046200a946565b6200147e565b620003c4620016a6565b620003c4620005013660046200a70a565b620018b6565b620003c4620005183660046200a9ee565b62001b3e565b6200045e62001b73565b6200045e62001bd5565b602554620003fb906001600160a01b031681565b6200055d620005573660046200aa1d565b62001c37565b60405190151581526020016200040f565b6200057862001c88565b6040516200040f91906200aa71565b620003c462001d90565b620003c4620005a23660046200ab5e565b62001ff2565b603254620003fb906001600160a01b031681565b620003c462002250565b602a54620003fb906001600160a01b031681565b620005e46200273d565b6040516200040f91906200abda565b6200057862002817565b620003c46200060e3660046200a9ee565b62002916565b620003c462002c00565b620003c46200062f3660046200a70a565b62002ece565b601e54620003fb906001600160a01b031681565b620003c46200301d565b620003c462003526565b620003c4620036e4565b620003c462003a4a565b603154620003fb906001600160a01b031681565b620003c4620006963660046200ac5e565b62003c48565b620005e462003c8d565b601b54620003fb906001600160a01b031681565b620003c462003d67565b620006db620006d53660046200ac96565b62003ea3565b6040516200040f91906200ad11565b6200055d6200407b565b601c54620003fb906001600160a01b031681565b601d54620003fb906001600160a01b031681565b620004b66200072d3660046200a77e565b620041c7565b602254620003fb906001600160a01b031681565b620004b6620007583660046200ad26565b62004330565b620003c462004360565b602054620003fb906001600160a01b031681565b6200045e620044c3565b620004b6620007973660046200a77e565b62004525565b620003c4620007ae3660046200a946565b62004552565b6000546200055d9060ff1681565b602454620003fb906001600160a01b031681565b60006200085f604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b6031546034546040517f4a03c69a0000000000000000000000000000000000000000000000000000000081529293506001600160a01b039182169260009290911690634a03c69a90620008b990859087906004016200ad7d565b608060405180830381865afa158015620008d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fd91906200adb2565b80516034546040517f5500079d000000000000000000000000000000000000000000000000000000008152929350620009d2926001600160a01b0390911690635500079d90620009529088906004016200ae2b565b602060405180830381865afa15801562000970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099691906200ae40565b6040518060400160405280601181526020017f686173682073686f756c64206d61746368000000000000000000000000000000815250620047fb565b62000a188160200151156040518060400160405280601b81526020017f657870656374656420617574686f72697a6564203d2066616c7365000000000081525062004848565b62000a6181604001516000801b6040518060400160405280601581526020017f6578706563746564207a65726f20636162696e65740000000000000000000000815250620047fb565b62000aa8816060015160006040518060400160405280601981526020017f657870656374656420756e73657420737761702067756172640000000000000081525062004892565b505050565b62000ab7620048f1565b565b604080516060810182526001600160a01b03851681526020810184905280820183905290517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f7a933234000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562000b6157600080fd5b505af115801562000b76573d6000803e3d6000fd5b5050603454604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b0390921693506326e0a196925062000be3918991869190602481016200ae5a565b600060405180830381865afa15801562000c01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c2b91908101906200af16565b50505050505050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000c68906200b021565b80601f016020809104026020016040519081016040528092919081815260200182805462000c96906200b021565b801562000ce75780601f1062000cbb5761010080835404028352916020019162000ce7565b820191906000526020600020905b81548152906001019060200180831162000cc957829003601f168201915b5050505050905083565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000d4b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000d2c575b5050505050905090565b60315460009062000d71906001600160a01b0316603262004c71565b90506000808062000d8d848260396200129662003ea362004f03565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a8214640000000000000000000000000000000000000000000000000000000060048201529295509093509150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562000e1b57600080fd5b505af115801562000e30573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a196945062000e96939092169186919088906004016200ae5a565b600060405180830381865afa15801562000eb4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000ede91908101906200af16565b50506040805180820182526000808252825160208181019094529081529181019190915260315462000f1b906001600160a01b03168583620051f4565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152919384936001600160a01b03918216936326e0a1969362000f81939092169189918b906004016200ae5a565b600060405180830381865afa15801562000f9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000fc991908101906200af16565b9150915060007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200105991906200ae40565b60315460408051808201909152602d546001600160a01b039081168252602e546020830152929350620010949290911690858560006200546d565b6040517f44d7f0a400000000000000000000000000000000000000000000000000000000815260048101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906344d7f0a4906024016020604051808303816000875af115801562001100573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112691906200b076565b5060315462001141906001600160a01b0316600086620051f4565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a821464000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620011c757600080fd5b505af1158015620011dc573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a19694506200124293909216918a91908c906004016200ae5a565b600060405180830381865afa15801562001260573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200128a91908101906200af16565b50505050505050505050565b600060018251116200132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200134d57620013458262005d9b565b91506200132f565b816000815181106200136357620013636200b094565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000ab7926001600160a01b03169163f698da259160048083019260209291908290030181865afa158015620013d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013fe91906200ae40565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147891906200ae40565b62005f27565b84516040517f4c63e5620000000000000000000000000000000000000000000000000000000081529015156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620014e657600080fd5b505afa158015620014fb573d6000803e3d6000fd5b5050505060006040518060600160405280856001600160a01b0316815260200184815260200183815250905062001558878660405180604001604052806000815260200160405180602001604052806000815250815250620051f4565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a821464000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620015de57600080fd5b505af1158015620015f3573d6000803e3d6000fd5b5050603454604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0390921693506326e0a196925062001653918b9186918c906004016200ae5a565b600060405180830381865afa15801562001671573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200169b91908101906200af16565b505050505050505050565b603154600090620016c2906001600160a01b0316603262004c71565b905060008080620016de848260396200129662003ea362004f03565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a8214640000000000000000000000000000000000000000000000000000000060048201529295509093509150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200176c57600080fd5b505af115801562001781573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a1969450620017e7939092169186919088906004016200ae5a565b600060405180830381865afa15801562001805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200182f91908101906200af16565b50506040805180820182526000808252825160208181018552918152818301526031546036549351929362000f1b936001600160a01b0392831693899387931691620018a1917f7465737456616c75650000000000000000000000000000000000000000000000910190815260200190565b60405160208183030381529060405262006039565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200192557600080fd5b505afa1580156200193a573d6000803e3d6000fd5b5050604080516060810182526001600160a01b03871681526020810186905280820185905290517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f7a933234000000000000000000000000000000000000000000000000000000006004820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015620019e857600080fd5b505af1158015620019fd573d6000803e3d6000fd5b50506034546001600160a01b031691506353f00b1490508660007f3e065c237239c100e9e1a76c49e8333afdd19f83903bd9ddcaf0fde32594632d7f26d17eb22ca6b2615b053b942d517a8eb1dc14746ac5059914694f5dd6023a528262001a6462006360565b60405160200162001a7691906200b183565b60408051601f19818403018152600060608401818152608085018452845260208085018d905283518082018552918252848401919091529151909262001abf929091016200b194565b6040516020818303038152906040526040518863ffffffff1660e01b815260040162001af297969594939291906200b1f2565b602060405180830381865afa15801562001b10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b3691906200b254565b505050505050565b62001b6f828260405180604001604052806000815260200160405180602001604052806000815250815250620051f4565b5050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000d4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d2c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000d4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d2c575050505050905090565b81516000908290825b8181101562001c7c5762001c718387838151811062001c635762001c636200b094565b602002602001015162004330565b925060010162001c40565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001d875760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001d6e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001d1a5790505b5050505050815250508152602001906001019062001cac565b50505050905090565b600062001e19604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b6031549091506001600160a01b031662001e3681836000620064e8565b6000600260405162001e48906200a52a565b908152602001604051809103906000f08015801562001e6b573d6000803e3d6000fd5b50905062001e7a828262006794565b6034546040517f4a03c69a0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690634a03c69a9062001ec890869088906004016200ad7d565b608060405180830381865afa15801562001ee6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f0c91906200adb2565b80516034546040517f5500079d00000000000000000000000000000000000000000000000000000000815292935062001f61926001600160a01b0390911690635500079d90620009529089906004016200ae2b565b62001fa681602001516040518060400160405280601a81526020017f657870656374656420617574686f72697a6564203d207472756500000000000081525062004848565b62001fec8160600151836040518060400160405280601681526020017f657870656374656420677561726420616464726573730000000000000000000081525062004892565b50505050565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200206157600080fd5b505afa15801562002076573d6000803e3d6000fd5b5050505060006040518060600160405280866001600160a01b03168152602001858152602001848152509050600081604051602001620020b791906200ae2b565b60408051808303601f190181529082905280516020909101206034547f6108c5320000000000000000000000000000000000000000000000000000000083526001600160a01b038a81166004850152602484018390529193506200216e92911690636108c532906044015b602060405180830381865afa15801562002140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200216691906200b076565b600062006a01565b6036546040805160208101869052620021a9928a9286926001600160a01b039092169101604051602081830303815290604052600162006bf5565b6034546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526024820184905262002244921690631c7662c890604401602060405180830381865afa15801562002217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200223d91906200ae40565b8462005f27565b62000c2b878362006e11565b6031546000906200226c906001600160a01b0316600162004c71565b6000815181106200228157620022816200b094565b6020026020010151905060008067ffffffffffffffff811115620022a957620022a96200a5f3565b604051908082528060200260200182016040528015620022d3578160200160208202803683370190505b509050600082604051602001620022eb91906200ae2b565b60408051808303601f190181529082905280516020909101206034546031547f6108c5320000000000000000000000000000000000000000000000000000000084526001600160a01b039081166004850152602484018390529193506200235e92911690636108c5329060440162002122565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f7a933234000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620023e457600080fd5b505af1158015620023f9573d6000803e3d6000fd5b5050603454603154604080516020810182526000815290517f26e0a1960000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506326e0a19694506200245f939092169188919088906004016200ae5a565b600060405180830381865afa1580156200247d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620024a791908101906200af16565b5050603154620024c3906001600160a01b0316846001620064e8565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254f91906200ae40565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152949550909384936001600160a01b03908116936326e0a19693620025b99391909216918b918b906004016200ae5a565b600060405180830381865afa158015620025d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200260191908101906200af16565b60315460408051808201909152602d546001600160a01b039081168252602e5460208301529395509193506200263d921690848460006200546d565b6040517f44d7f0a400000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d906344d7f0a4906024016020604051808303816000875af1158015620026a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026cf91906200b076565b50603154620026e8906001600160a01b03168762006e11565b60315460408051808201909152602d546001600160a01b039081168252602e54602083015262001b3692169084847f7a933234000000000000000000000000000000000000000000000000000000006200546d565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001d8757838290600052602060002001805462002783906200b021565b80601f0160208091040260200160405190810160405280929190818152602001828054620027b1906200b021565b8015620028025780601f10620027d65761010080835404028352916020019162002802565b820191906000526020600020905b815481529060010190602001808311620027e457829003601f168201915b50505050508152602001906001019062002761565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001d875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620028fd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028a95790505b505050505081525050815260200190600101906200283b565b604080516060810182526037546001600160a01b031681527f5a1b0982e87164f04c07f3e34b873c8bd03f31645cb3c70d611c56ca3d37e6b76020808301919091528251908101835260008082529282015290620029789084908390620064e8565b60006200298462006360565b604080516020808201835260008083526034549351949550919391926001600160a01b0316916353f00b149189918591620029c2918991016200b183565b60405160208183030381529060405280519060200120896000801b89604051602001620029f091906200b183565b60408051601f19818403018152600060608401908152608084018352835260208084018f90528383018d90529151909262002a2e929091016200b194565b60408051601f198184030181529082905262002a53979695949392916024016200b1f2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925260345491519093506000925082916001600160a01b03169062002ab99085906200b298565b6000604051808303816000865af19150503d806000811462002af8576040519150601f19603f3d011682016040523d82523d6000602084013e62002afd565b606091505b509150915062002b0e8215620070d1565b62002bf6816314a2a78460e01b8a60008960405160200162002b3191906200b183565b604051602081830303815290604052805190602001208c8c60405160200162002b5b91906200ae2b565b604051602081830303815290604052805190602001208d604001518c8e60405160240162002b919897969594939291906200b2b6565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200714c565b5050505050505050565b600062002c89604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b6034546040517f5500079d0000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635500079d9062002cda9085906004016200ae2b565b602060405180830381865afa15801562002cf8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d1e91906200ae40565b6031549091506001600160a01b031662002d3b81846000620064e8565b6034546040517f4a03c69a0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690634a03c69a9062002d8990859088906004016200ad7d565b608060405180830381865afa15801562002da7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002dcd91906200adb2565b905062002e158160000151846040518060400160405280600d81526020017f68617368206d69736d6174636800000000000000000000000000000000000000815250620047fb565b62002e5a81602001516040518060400160405280601a81526020017f657870656374656420617574686f72697a6564203d207472756500000000000081525062004848565b62002e8781604001516000801b60405180606001604052806026815260200162016f8f60269139620047fb565b62001fec816060015160006040518060400160405280601981526020017f657870656374656420756e73657420737761702067756172640000000000000081525062004892565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002f3d57600080fd5b505afa15801562002f52573d6000803e3d6000fd5b5050505060006040518060600160405280856001600160a01b0316815260200184815260200183815250905060008160405160200162002f9391906200ae2b565b60408051808303601f190181529082905280516020909101206034547f6108c5320000000000000000000000000000000000000000000000000000000083526001600160a01b038981166004850152602484018390529193506200300392911690636108c5329060440162002122565b6200301186836001620064e8565b62001b36868362006e11565b6000620030a6604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b602b54909150620030c3906001600160a01b0316826000620064e8565b6000620030cf62006360565b90506000620031fa7fef1cc318c031f6538ef09fbcfd6bb018a44dd0852d289c0466c29619432b15176040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b90506000603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327891906200ae40565b604080518082018252600c81527f696e76616c69642068617368000000000000000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620032fd91906024016200b32c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262003371916004016200b32c565b600060405180830381600087803b1580156200338c57600080fd5b505af1158015620033a1573d6000803e3d6000fd5b5050603454602b546001600160a01b0391821693506353f00b149250166000620034328786601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856000801b896040516020016200344a91906200b183565b60408051601f19818403018152600060608401908152608084018352835260208084018f9052825191939283019162003486918e91016200b183565b60408051601f19818403018152918152915251620034a891906020016200b194565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401620034db97969594939291906200b1f2565b602060405180830381865afa158015620034f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200351f91906200b254565b5050505050565b604080516060810182526037546001600160a01b0390811682527f5a1b0982e87164f04c07f3e34b873c8bd03f31645cb3c70d611c56ca3d37e6b760208084019190915283519081018452600080825293830152602b5491926200359092909116908390620064e8565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2c7ca6d7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200361657600080fd5b505af11580156200362b573d6000803e3d6000fd5b5050603454602b54604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b0393841695506326e0a19694506200369c93909216918691602481016200ae5a565b600060405180830381865afa158015620036ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000aa891908101906200af16565b6034546040516000916001600160a01b03169062003702906200a538565b6001600160a01b039091168152602001604051809103906000f0801580156200372f573d6000803e3d6000fd5b5090506000620037bb604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b9050620037cb82826000620064e8565b60345460009081906001600160a01b03166326e0a1968585620037ed62006360565b604051602001620037ff91906200b183565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1690915262003853939291602481016200ae5a565b600060405180830381865afa15801562003871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200389b91908101906200af16565b9150915062001fec846001600160a01b0316631626ba7e6200399d85603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200390b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200393191906200ae40565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b846040518363ffffffff1660e01b8152600401620039bd9291906200b341565b602060405180830381865afa158015620039db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a0191906200b254565b7fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000062005f27565b600062003ad3604080516060808201835260008083526020808401829052928401829052603554845180850186528281528551808501875283815280860193909352918501839052845192830185526001600160a01b031682527f1434245f20a419a08389ea57c1d65110fbe8fd23fb1852d44a22071f9b8682b3928201929092529182015290565b60315490915062003af0906001600160a01b0316826000620064e8565b60345460315460009182916001600160a01b03918216916326e0a19691168562003b1962006360565b60405160200162003b2b91906200b183565b60408051601f198184030181526000835260208301918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1690915262003b7f939291602481016200ae5a565b600060405180830381865afa15801562003b9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003bc791908101906200af16565b603154603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062000aa8936001600160a01b0392831693631626ba7e936200399d93899391169163f698da259160048083019260209291908290030181865afa1580156200390b573d6000803e3d6000fd5b604080518082018252600080825282516020808201855291815281830152603654835191820185905262000aa8938793879390926001600160a01b03169101620018a1565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001d8757838290600052602060002001805462003cd3906200b021565b80601f016020809104026020016040519081016040528092919081815260200182805462003d01906200b021565b801562003d525780601f1062003d265761010080835404028352916020019162003d52565b820191906000526020600020905b81548152906001019060200180831162003d3457829003601f168201915b50505050508152602001906001019062003cb1565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000ab7946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562003de3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e0991906200ae40565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562003e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e9191906200b35c565b6034546001600160a01b031662007158565b6060600183511162003f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162001326565b600062003f458451620041c7565b67ffffffffffffffff81111562003f605762003f606200a5f3565b60405190808252806020026020018201604052801562003f8a578160200160208202803683370190505b50905060005b60018551111562004071578360011660010362003fee5784600185038151811062003fbf5762003fbf6200b094565b602002602001015182828151811062003fdc5762003fdc6200b094565b60200260200101818152505062004055565b8451846001010362004013576000801b82828151811062003fdc5762003fdc6200b094565b8484600101815181106200402b576200402b6200b094565b60200260200101518282815181106200404857620040486200b094565b6020026020010181815250505b600101600284049350620040698562005d9b565b945062003f90565b5090505b92915050565b60008054610100900460ff16156200409c5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620041c25760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162004144917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200b37c565b60408051601f198184030181529082905262004160916200b298565b6000604051808303816000865af19150503d80600081146200419f576040519150601f19603f3d011682016040523d82523d6000602084013e620041a4565b606091505b5091505080806020019051810190620041be91906200b076565b9150505b919050565b600060018211620041da57506000919050565b60008270010000000000000000000000000000000081106200420b57608093841c936200420890836200b3f5565b91505b6801000000000000000084106200423157604093841c936200422e90836200b3f5565b91505b64010000000084106200425357602093841c936200425090836200b3f5565b91505b6201000084106200427357601093841c936200427090836200b3f5565b91505b61010084106200429257600893841c936200428f90836200b3f5565b91505b60108410620042b057600493841c93620042ad90836200b3f5565b91505b60048410620042ce57600293841c93620042cb90836200b3f5565b91505b60028410620042e757620042e46001836200b3f5565b91505b600081620042f8811960016200b3f5565b16905081811480156200430b5750600083115b156200431a5750909392505050565b620043278360016200b3f5565b95945050505050565b600081831080156200434a57836000528260205262004353565b82600052836020525b5050604060002092915050565b6040805160608101825260008082527fe091ca7485bb6e74431c68b9a6ccbf864608b8c6f29132be33a88d4a4a02ef53602080840191909152835190810184529081528183015290517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8f59fa5000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200442c57600080fd5b505af115801562004441573d6000803e3d6000fd5b50506034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250636bfae1ca9150620044939084906001906004016200b40b565b600060405180830381600087803b158015620044ae57600080fd5b505af11580156200351f573d6000803e3d6000fd5b6060600c80548060200260200160405190810160405280929190818152602001828054801562000d4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d2c575050505050905090565b6000808219600101831683145b83156200454a57600193841c93919091019062004532565b900392915050565b84516040517f4c63e5620000000000000000000000000000000000000000000000000000000081529015156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620045ba57600080fd5b505afa158015620045cf573d6000803e3d6000fd5b5050505060006040518060600160405280856001600160a01b031681526020018481526020018381525090506200462c878660405180604001604052806000815260200160405180602001604052806000815250815250620051f4565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f4a821464000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015620046b257600080fd5b505af1158015620046c7573d6000803e3d6000fd5b50506034546001600160a01b031691506353f00b1490508860007f1e19c368b8e9c45999d9dae49fdaf9f9f10d9fa0e52cff7fab17f0afd87d80b07f26d17eb22ca6b2615b053b942d517a8eb1dc14746ac5059914694f5dd6023a52826200472e62006360565b6040516020016200474091906200b183565b60408051601f198184030181526060830182528f835260208381018c9052825180820184526000815284840152915190926200477f929091016200b194565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401620047b297969594939291906200b1f2565b602060405180830381865afa158015620047d0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bf691906200b254565b905090565b81831462000aa8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200483491906200b431565b60405180910390a162000aa8838362005f27565b8162001b6f577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200487f91906200b431565b60405180910390a162001b6f82620070d1565b816001600160a01b0316836001600160a01b03161462000aa8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620048dd91906200b431565b60405180910390a162000aa8838362007158565b620048fb6200726a565b6025546040516001600160a01b039091169062004918906200a546565b6001600160a01b039091168152602001604051809103906000f08015801562004945573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162004acd94938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562004a06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a2c91906200ae40565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062004ab66200762c565b6031546001600160a01b0316949392919062007706565b60405162004adb906200a554565b604051809103906000f08015801562004af8573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162004b3f906200a562565b604051809103906000f08015801562004b5c573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162004ba3906200a570565b604051809103906000f08015801562004bc0573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560345460405191169062004c09906200a57e565b6001600160a01b039091168152602001604051809103906000f08015801562004c36573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60408051610140810182526021546001600160a01b03908116825260225416602082015260009181018290526001606082810182905260808301919091524260a0830152600260c0830152610e1060e08301526101008201929092527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b41426101208201528267ffffffffffffffff81111562004d105762004d106200a5f3565b60405190808252806020026020018201604052801562004d5f57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162004d2f5790505b50915060005b825181101562004e0e57604080516060810182526038546001600160a01b0316815281516020808201859052919291830191016040516020818303038152906040528051906020012081526020018360405160200162004dc691906200b47a565b60405160208183030381529060405281525083828151811062004ded5762004ded6200b094565b6020026020010181905250808062004e05906200b514565b91505062004d65565b508051602a54606083015160c084015162004efc93926000927f095ea7b300000000000000000000000000000000000000000000000000000000926001600160a01b039092169162004e6191906200b54f565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062004ee76200762c565b6001600160a01b038a16949392919062007706565b5092915050565b60408051606081810183526000808352602083018190529282018190529060005b885181101562004ff35788818151811062004f435762004f436200b094565b602002602001015187600062004f758c858151811062004f675762004f676200b094565b60200260200101516200792d565b81526020808201929092526040908101600020835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178155918301516001830155820151600282019062004fd990826200b5b3565b50905050808062004fea906200b514565b91505062004f24565b506000885167ffffffffffffffff8111156200501357620050136200a5f3565b6040519080825280602002602001820160405280156200503d578160200160208202803683370190505b50905060005b89518110156200509b57620050668a828151811062004f675762004f676200b094565b8282815181106200507b576200507b6200b094565b60209081029190910101528062005092816200b514565b91505062005043565b506000620050a9826200797c565b90506000620050bb828963ffffffff16565b90506000620050ce838c8a63ffffffff16565b905060008a6000858e81518110620050ea57620050ea6200b094565b602002602001015181526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201805462005156906200b021565b80601f016020809104026020016040519081016040528092919081815260200182805462005184906200b021565b8015620051d55780601f10620051a957610100808354040283529160200191620051d5565b820191906000526020600020905b815481529060010190602001808311620051b757829003601f168201915b5050509190925250949f939e50909c50919a5050505050505050505050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200526357600080fd5b505af115801562005278573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620052f857600080fd5b505af11580156200530d573d6000803e3d6000fd5b50505050826001600160a01b03167f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e5783836040516200534e9291906200b6dd565b60405180910390a26034546040517f1ab0dd9d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631ab0dd9d90620053a390859085906004016200b6dd565b600060405180830381600087803b158015620053be57600080fd5b505af1158015620053d3573d6000803e3d6000fd5b50506034546040517fa45468760000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015262000aa89450909116915063a454687690602401602060405180830381865afa15801562005440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200546691906200ae40565b8362005f27565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525090506000620055c8620055c083602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200390b573d6000803e3d6000fd5b879062007a9d565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200563d57600080fd5b505af115801562005652573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af1158015620056ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056f091906200b076565b506040805160028082526060820183526000926020830190803683370190505090508560000151816000815181106200572d576200572d6200b094565b60200260200101906001600160a01b031690816001600160a01b0316815250508560200151816001815181106200576857620057686200b094565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183526000939192909183019080368337019050509050836060015181600081518110620057be57620057be6200b094565b602002602001018181525050836080015181600181518110620057e557620057e56200b094565b602090810291909101015260408051600280825260608201909252600091816020015b62005878604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b81526020019060019003908162005808579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e001518152602001620059008a600262007bc7565b8152602001896060015181526020018b89604051602001620059249291906200b6f8565b604051602081830303815290604052815250816000815181106200594c576200594c6200b094565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e001518152602001620059c687600062007bc7565b8152602001866060015181526020018581525081600181518110620059ef57620059ef6200b094565b602002602001018190525060006040518060600160405280600067ffffffffffffffff81111562005a245762005a246200a5f3565b60405190808252806020026020018201604052801562005a7357816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162005a435790505b508152602001600060405190808252806020026020018201604052801562005aca57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162005a9a5790505b508152602001600060405190808252806020026020018201604052801562005b2157816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162005af15790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562005b9a57600080fd5b505af115801562005baf573d6000803e3d6000fd5b5050507fffffffff000000000000000000000000000000000000000000000000000000008816905062005c67576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b9062005c2d9087908790879087906004016200b7fa565b600060405180830381600087803b15801562005c4857600080fd5b505af115801562005c5d573d6000803e3d6000fd5b5050505062005d8e565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562005cef57600080fd5b505af115801562005d04573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b915062005d599087908790879087906004016200b7fa565b600060405180830381600087803b15801562005d7457600080fd5b505af115801562005d89573d6000803e3d6000fd5b505050505b5050505050505050505050565b6060806000835190508060011660010362005e58576002810460010167ffffffffffffffff81111562005dd25762005dd26200a5f3565b60405190808252806020026020018201604052801562005dfc578160200160208202803683370190505b50915062005e2d84600183038151811062005e1b5762005e1b6200b094565b60200260200101516000801b62004330565b8260018451038151811062005e465762005e466200b094565b60200260200101818152505062005ea5565b6002810467ffffffffffffffff81111562005e775762005e776200a5f3565b60405190808252806020026020018201604052801562005ea1578160200160208202803683370190505b5091505b6000805b6001830381101562005f1d5762005eee86828151811062005ece5762005ece6200b094565b602002602001015187836001018151811062001c635762001c636200b094565b84838151811062005f035762005f036200b094565b602090810291909101015260019091019060020162005ea9565b5091949350505050565b80821462001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162005fb59060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162005fee91906200b95a565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99816040516200602791906200b9a6565b60405180910390a162001b6f62007d14565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620060a857600080fd5b505af1158015620060bd573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200613d57600080fd5b505af115801562006152573d6000803e3d6000fd5b50505050846001600160a01b03167f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e578585604051620061939291906200b6dd565b60405180910390a26034546040517f57f1d41a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906357f1d41a90620061ec9087908790879087906004016200b9e4565b600060405180830381600087803b1580156200620757600080fd5b505af11580156200621c573d6000803e3d6000fd5b50506034546040517fa45468760000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152620062b69450909116915063a454687690602401602060405180830381865afa15801562006289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062af91906200ae40565b8562005f27565b6034546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152600060248301526200351f921690631c7662c890604401602060405180830381865afa15801562006324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200634a91906200ae40565b828060200190518101906200147891906200ae40565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152620047f67fdfe0aea12481b6861fe85f311f9e24a0b5f7886a445111af3b17dccfa27d99656040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019290925260e082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756101008301526101208201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9610140820181905261016082015290565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200655757600080fd5b505af11580156200656c573d6000803e3d6000fd5b50505050801562006650576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620065f357600080fd5b505af115801562006608573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516200664791906200ae2b565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca906200669d90859085906004016200b40b565b600060405180830381600087803b158015620066b857600080fd5b505af1158015620066cd573d6000803e3d6000fd5b505060345460405162000aa893506001600160a01b039091169150636108c532908690620067009087906020016200ae2b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401620067489291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200678c91906200b076565b600162006a01565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200680357600080fd5b505af115801562006818573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200689857600080fd5b505af1158015620068ad573d6000803e3d6000fd5b50506040516001600160a01b038481168252851692507f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859915060200160405180910390a26034546040517f8f7984ed0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690638f7984ed90602401600060405180830381600087803b1580156200695257600080fd5b505af115801562006967573d6000803e3d6000fd5b50506034546040517f595001b20000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015262001b6f9450909116915063595001b290602401602060405180830381865afa158015620069d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069fa91906200b35c565b8262007158565b8015158215151462001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162006a939060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262006afe576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062006b35565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162006b4491906200ba22565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162006baf576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062006be6565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b6040516200602791906200ba74565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562006c6457600080fd5b505af115801562006c79573d6000803e3d6000fd5b50505050801562006d5d576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562006d0057600080fd5b505af115801562006d15573d6000803e3d6000fd5b50505050846001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618560405162006d5491906200ae2b565b60405180910390a25b6034546040517f0d0d98000000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690630d0d98009062006dae9087908790879087906004016200bab2565b600060405180830381600087803b15801562006dc957600080fd5b505af115801562006dde573d6000803e3d6000fd5b50506034546040516200351f93506001600160a01b039091169150636108c532908890620067009089906020016200ae2b565b60008160405160200162006e2691906200ae2b565b60408051808303601f190181529082905280516020909101206034547f1c7662c80000000000000000000000000000000000000000000000000000000083526001600160a01b03868116600485015260248401839052919350600092911690631c7662c890604401602060405180830381865afa15801562006eac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ed291906200ae40565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562006f4457600080fd5b505af115801562006f59573d6000803e3d6000fd5b50506034546040517f95bc2673000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911692506395bc26739150602401600060405180830381600087803b15801562006fbd57600080fd5b505af115801562006fd2573d6000803e3d6000fd5b50506034546040517f6108c5320000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018790526200702e94509091169150636108c5329060440162002122565b801562001fec576034546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820185905262001fec921690631c7662c890604401602060405180830381865afa158015620070a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070c991906200ae40565b600062005f27565b8062007149577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620071379060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200714962007d14565b50565b62001b6f828262007e5b565b806001600160a01b0316826001600160a01b03161462001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620071f89060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200723191906200bafe565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f816040516200602791906200bb53565b6200727462007f64565b620072b46040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062008396565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620073379062008396565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620073ba9062008396565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462007419929182169116683635c9adc5dea000006200851c565b602254602d5462007441916001600160a01b039081169116683635c9adc5dea000006200851c565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b0316918391506000906200748757620074876200b094565b6001600160a01b039283166020918202929092010152602d54825191169082906001908110620074bb57620074bb6200b094565b6001600160a01b039283166020918202929092010152602f54825191169082906002908110620074ef57620074ef6200b094565b6001600160a01b039283166020918202929092010152601c54601b54601e546200752993928316929182169185916002911660006200852b565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200758193928316929182169185916002911660016200852b565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620075d8939283169291821691859160029116816200852b565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462007149929182169116683635c9adc5dea000006200851c565b604080516002808252606082810190935260009190816020015b60408051808201909152600080825260208201528152602001906001900390816200764657505060408051808201909152602b546001600160a01b03168152602c5460208201528151919250908290600090620076a757620076a76200b094565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e5491810191909152815182906001908110620076f057620076f06200b094565b602002602001018190525062004075816200862f565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776d91906200ae40565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620077b49a999897969594939291906200bbfc565b602060405180830381865afa158015620077d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620077f891906200ae40565b905062007805836200862f565b9250606060005b845181101562007882578162007848848784815181106200783157620078316200b094565b602002602001015162007a9d90919063ffffffff16565b6040516020016200785b9291906200bc73565b6040516020818303038152906040529150808062007879906200b514565b9150506200780c565b50886001600160a01b0316636a7612028989898960008060008060008b604051602001620078b191906200b298565b6040516020818303038152906040526040518b63ffffffff1660e01b8152600401620078e79a999897969594939291906200bca6565b6020604051808303816000875af115801562007907573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200128a91906200b076565b6000816040516020016200794291906200ae2b565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050919050565b606060005b825181101562007a965760006200799a8260016200b3f5565b90505b835181101562007a8057838181518110620079bc57620079bc6200b094565b6020026020010151848381518110620079d957620079d96200b094565b6020026020010151111562007a6b576000848381518110620079ff57620079ff6200b094565b6020026020010151905084828151811062007a1e5762007a1e6200b094565b602002602001015185848151811062007a3b5762007a3b6200b094565b6020026020010181815250508085838151811062007a5d5762007a5d6200b094565b602002602001018181525050505b8062007a77816200b514565b9150506200799d565b508062007a8d816200b514565b91505062007981565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801562007b1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b4491906200bd2d565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc8361010001510362007bfa576001175b8261012001511562007c0a576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328361014001510362007c405760081762007c71565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce8361014001510362007c7157600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce8361016001510362007ca2576010175b600182600381111562007cb95762007cb96200bb91565b0362007cc85760201762004075565b600282600381111562007cdf5762007cdf6200bb91565b0362007cee5760401762004075565b600382600381111562007d055762007d056200bb91565b03620040755760601792915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562007e2d5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262007dc892916020016200b37c565b60408051601f198184030181529082905262007de4916200b298565b6000604051808303816000865af19150503d806000811462007e23576040519150601f19603f3d011682016040523d82523d6000602084013e62007e28565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62007e67828262008761565b62001b6f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007ef29060208082526023908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f65735d0000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf188260405162007f2b91906200ba22565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18816040516200602791906200ba74565b62007fa46040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062008396565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c766572000000000000000000000000000000000000000000000000000091810191909152620080279062008396565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c74000000000000000000000000000000000000000000000091810191909152620080aa906200882a565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051600090620080f3906200a58c565b604051809103906000f08015801562008110573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b1580156200817457600080fd5b505af115801562008189573d6000803e3d6000fd5b50506024546040518493506001600160a01b039091169150620081ac906200a59a565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620081e0573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa1580156200826d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200829391906200b35c565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200833157600080fd5b505af115801562008346573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b8915060240162004493565b6040805180820190915260008082526020820152600082604051602001620083bf91906200b298565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562008444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200846a91906200b35c565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620084c190849088906004016200bd6c565b600060405180830381600087803b158015620084dc57600080fd5b505af1158015620084f1573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b62000aa8838383600062008837565b6000866001600160a01b0316631688f0b98763b63e800d60e01b888860008960008060006040516024016200856797969594939291906200bd90565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252620085de929187906004016200bdfa565b6020604051808303816000875af1158015620085fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200862491906200b35c565b979650505050505050565b606060005b825181101562007a965760006200864d8260016200b3f5565b90505b83518110156200874b578381815181106200866f576200866f6200b094565b6020026020010151600001516001600160a01b03168483815181106200869957620086996200b094565b6020026020010151600001516001600160a01b0316111562008736576000848381518110620086cc57620086cc6200b094565b60200260200101519050848281518110620086eb57620086eb6200b094565b60200260200101518584815181106200870857620087086200b094565b6020026020010181905250808583815181106200872957620087296200b094565b6020026020010181905250505b8062008742816200b514565b91505062008650565b508062008758816200b514565b91505062008634565b805182516001919003620088215760005b83518110156200881a578281815181106200879157620087916200b094565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110620087d357620087d36200b094565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146200880557600091505b8062008811816200b514565b91505062008772565b5062004075565b50600092915050565b600062004efc8262008ac4565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790529151600092871691620088bb916200b298565b6000604051808303816000865af19150503d8060008114620088fa576040519150601f19603f3d011682016040523d82523d6000602084013e620088ff565b606091505b509150506000818060200190518101906200891b91906200ae40565b90506200896e846200896787620089607f70a08231000000000000000000000000000000000000000000000000000000006200895960058d62008c12565b9062008c52565b9062008c8b565b9062008cb4565b821562001b365760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b03891691620089e791906200b298565b6000604051808303816000865af19150503d806000811462008a26576040519150601f19603f3d011682016040523d82523d6000602084013e62008a2b565b606091505b5091505060008180602001905181019062008a4791906200ae40565b90508286101562008a725762008a5e86846200be2e565b62008a6a90826200be2e565b905062008a8d565b62008a7e83876200be2e565b62008a8a90826200b3f5565b90505b62002bf681620089677f18160ddd000000000000000000000000000000000000000000000000000000006200895960058d62008c12565b6000808260405160200162008ada91906200b298565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562008b5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008b8291906200b35c565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062008bd990859087906004016200bd6c565b600060405180830381600087803b15801562008bf457600080fd5b505af115801562008c09573d6000803e3d6000fd5b50505050915091565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262008c4b565b6002820180546001810182556000918252602082206001600160a01b0384169101558262008c4b565b62001b6f8282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562008d2d57602002820191906000526020600020905b81548152602001906001019080831162008d18575b5050505050905060008362008d42836200918e565b60405160200162008d559291906200b37c565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a16835281529281209194509092909162008dc19186918891016200be44565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662008dfc5762008dfa876200923b565b505b6001600160a01b0385166000908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519091839162008e559187918991016200be44565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162008e9c91906200b298565b600060405180830381855afa9150503d806000811462008ed9576040519150601f19603f3d011682016040523d82523d6000602084013e62008ede565b606091505b50915062008efb90508162008ef58860206200b54f565b62009248565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562008f7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008fa191906200ae40565b905080821462009080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001326565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620090fd57600080fd5b505af115801562009112573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200917a60028b0160006200a5a8565b896004016000905550505050505050505050565b6060600082516020620091a291906200b54f565b67ffffffffffffffff811115620091bd57620091bd6200a5f3565b6040519080825280601f01601f191660200182016040528015620091e8576020820181803683370190505b50905060005b835181101562004efc5760008482815181106200920f576200920f6200b094565b60200260200101519050808260200260200184015250808062009232906200b514565b915050620091ee565b60006200407582620092ea565b600080600060208551116200925f57845162009262565b60205b905060005b81811015620092e0576200927d8160086200b54f565b866200928a83886200b3f5565b815181106200929d576200929d6200b094565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620092d7816200b514565b91505062009267565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200935c57602002820191906000526020600020905b81548152602001906001019080831162009347575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905195965094919350620093c0925085918791016200be44565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562009477576001600160a01b0384166000908152602087815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909291620094479185918791016200be44565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009485836200a3e5565b604051602001620094989291906200b37c565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200950857600080fd5b505af11580156200951d573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200953e91906200b298565b600060405180830381855afa9150503d80600081146200957b576040519150601f19603f3d011682016040523d82523d6000602084013e62009580565b606091505b5091506200959d905081620095978760206200b54f565b6200a492565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562009618573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200964291908101906200bee2565b509050805160010362009a745760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200969a576200969a6200b094565b60200260200101516040518363ffffffff1660e01b8152600401620096d49291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620096f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200971891906200ae40565b90508062009783577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200975857620097586200b094565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462009860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001326565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620098989291906200be44565b6040516020818303038152906040528051906020012085600081518110620098c457620098c46200b094565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1816000815181106200993657620099366200b094565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262009999918a918c91016200be44565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162009a1b918a918c91016200be44565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200a1dd565b6001815111156200a1525760005b81518110156200a14b5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062009ad65762009ad66200b094565b60200260200101516040518363ffffffff1660e01b815260040162009b109291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009b5491906200ae40565b90508062009bbe577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062009b935762009b936200b094565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062009c065762009c066200b094565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b15801562009c9657600080fd5b505af115801562009cab573d6000803e3d6000fd5b50505050600060608a6001600160a01b03168760405162009ccd91906200b298565b600060405180830381855afa9150503d806000811462009d0a576040519150601f19603f3d011682016040523d82523d6000602084013e62009d0f565b606091505b50909250905062009d2781620095978b60206200b54f565b955081801562009d5657507f133700000000000000000000000000000000000000000000000000000000000086145b156200a060577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162009d949291906200be44565b6040516020818303038152906040528051906020012088888151811062009dbf5762009dbf6200b094565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062009e305762009e306200b094565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f168352845280822090519293909262009e93918d918f91016200be44565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162009f4a9291906200be44565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062009fcd5762009fcd6200b094565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a03e57600080fd5b505af11580156200a053573d6000803e3d6000fd5b505050505050506200a14b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200a0a8576200a0a86200b094565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a11957600080fd5b505af11580156200a12e573d6000803e3d6000fd5b5050505050505080806200a142906200b514565b91505062009a82565b506200a1dd565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162001326565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200a2399188918a91016200be44565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a2f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162001326565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200a35460028a0160006200a5a8565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200a3b29188918a91016200be44565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a3f991906200b54f565b67ffffffffffffffff8111156200a414576200a4146200a5f3565b6040519080825280601f01601f1916602001820160405280156200a43f576020820181803683370190505b50905060005b835181101562004efc5760008482815181106200a466576200a4666200b094565b6020026020010151905080826020026020018401525080806200a489906200b514565b9150506200a445565b600080600060208551116200a4a95784516200a4ac565b60205b905060005b81811015620092e0576200a4c78160086200b54f565b866200a4d483886200b3f5565b815181106200a4e7576200a4e76200b094565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200a521816200b514565b9150506200a4b1565b610306806200bf4483390190565b610b98806200c24a83390190565b61237a806200cde283390190565b61013c806200f15c83390190565b610809806200f29883390190565b610200806200faa183390190565b611246806200fca183390190565b610d068062010ee783390190565b6153a28062011bed83390190565b50805460008255906000526020600020908101906200714991905b808211156200a5d957600081556001016200a5c3565b5090565b6001600160a01b03811681146200714957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200a649576200a6496200a5f3565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200a67b576200a67b6200a5f3565b604052919050565b600067ffffffffffffffff8211156200a6a0576200a6a06200a5f3565b50601f01601f191660200190565b600082601f8301126200a6c057600080fd5b81356200a6d76200a6d1826200a683565b6200a64f565b8181528460208386010111156200a6ed57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156200a72157600080fd5b84356200a72e816200a5dd565b935060208501356200a740816200a5dd565b925060408501359150606085013567ffffffffffffffff8111156200a76457600080fd5b6200a772878288016200a6ae565b91505092959194509250565b6000602082840312156200a79157600080fd5b5035919050565b60005b838110156200a7b55781810151838201526020016200a79b565b50506000910152565b600081518084526200a7d88160208601602086016200a798565b601f01601f19169290920160200192915050565b6001600160a01b03841681528260208201526060604082015260006200432760608301846200a7be565b600081518084526020808501945080840160005b838110156200a8515781516001600160a01b0316875295820195908201906001016200a82a565b509495945050505050565b60208152600062008c4b60208301846200a816565b600067ffffffffffffffff8211156200a88e576200a88e6200a5f3565b5060051b60200190565b600082601f8301126200a8aa57600080fd5b813560206200a8bd6200a6d1836200a871565b82815260059290921b840181019181810190868411156200a8dd57600080fd5b8286015b848110156200a8fa57803583529183019183016200a8e1565b509695505050505050565b6000602082840312156200a91857600080fd5b813567ffffffffffffffff8111156200a93057600080fd5b6200a93e848285016200a898565b949350505050565b60008060008060008060c087890312156200a96057600080fd5b86356200a96d816200a5dd565b9550602087013567ffffffffffffffff808211156200a98b57600080fd5b6200a9998a838b016200a898565b965060408901359550606089013591506200a9b4826200a5dd565b9093506080880135925060a088013590808211156200a9d257600080fd5b506200a9e189828a016200a6ae565b9150509295509295509295565b600080604083850312156200aa0257600080fd5b82356200aa0f816200a5dd565b946020939093013593505050565b6000806000606084860312156200aa3357600080fd5b83359250602084013567ffffffffffffffff8111156200aa5257600080fd5b6200aa60868287016200a898565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200ab4f578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200ab395783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200aaf5565b50978a019795505050918701916001016200aa99565b50919998505050505050505050565b600080600080600060a086880312156200ab7757600080fd5b85356200ab84816200a5dd565b945060208601356200ab96816200a5dd565b935060408601359250606086013567ffffffffffffffff8111156200abba57600080fd5b6200abc8888289016200a6ae565b95989497509295608001359392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200ac51577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200ac3e8583516200a7be565b945092850192908501906001016200ac01565b5092979650505050505050565b6000806000606084860312156200ac7457600080fd5b83356200ac81816200a5dd565b95602085013595506040909401359392505050565b600080604083850312156200acaa57600080fd5b823567ffffffffffffffff8111156200acc257600080fd5b6200acd0858286016200a898565b95602094909401359450505050565b600081518084526020808501945080840160005b838110156200a851578151875295820195908201906001016200acf3565b60208152600062008c4b60208301846200acdf565b600080604083850312156200ad3a57600080fd5b50508035926020909101359150565b6001600160a01b0381511682526020810151602083015260006040820151606060408501526200a93e60608501826200a7be565b6001600160a01b03831681526040602082015260006200a93e60408301846200ad49565b80518015158114620041c257600080fd5b6000608082840312156200adc557600080fd5b6040516080810181811067ffffffffffffffff821117156200adeb576200adeb6200a5f3565b604052825181526200ae00602084016200ada1565b60208201526040830151604082015260608301516200ae1f816200a5dd565b60608201529392505050565b60208152600062008c4b60208301846200ad49565b6000602082840312156200ae5357600080fd5b5051919050565b6001600160a01b03851681526080602082015260006200ae7e60808301866200ad49565b82810360408401526200ae9281866200a7be565b905082810360608401526200862481856200acdf565b8051620041c2816200a5dd565b805163ffffffff81168114620041c257600080fd5b600082601f8301126200aedc57600080fd5b81516200aeed6200a6d1826200a683565b8181528460208386010111156200af0357600080fd5b6200a93e8260208301602087016200a798565b6000808284036101a08112156200af2c57600080fd5b610180808212156200af3d57600080fd5b6200af476200a622565b91506200af54856200aea8565b82526200af64602086016200aea8565b60208301526200af77604086016200aea8565b604083015260608501516060830152608085015160808301526200af9e60a086016200aeb5565b60a083015260c085015160c083015260e085015160e08301526101008086015181840152506101206200afd38187016200ada1565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156200b00957600080fd5b6200b017858286016200aeca565b9150509250929050565b600181811c908216806200b03657607f821691505b6020821081036200b070577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156200b08957600080fd5b62008c4b826200ada1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516001600160a01b0316825260208101516200b0eb60208401826001600160a01b03169052565b5060408101516200b10760408401826001600160a01b03169052565b50606081015160608301526080810151608083015260a08101516200b13460a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516200b16a8285018215159052565b5050610140818101519083015261016090810151910152565b61018081016200407582846200b0c3565b6020815260008251606060208401526200b1b260808401826200acdf565b90506020840151601f19808584030160408601526200b1d283836200ad49565b92506040860151915080858403016060860152506200432782826200a7be565b60006001600160a01b03808a16835280891660208401525086604083015285606083015284608083015260e060a08301526200b23260e08301856200a7be565b82810360c08401526200b24681856200a7be565b9a9950505050505050505050565b6000602082840312156200b26757600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811462008c4b57600080fd5b600082516200b2ac8184602087016200a798565b9190910192915050565b60006102606001600160a01b03808c168452808b166020850152508860408401528760608401528660808401528060a08401526200b2f7818401876200a7be565b905082810360c08401526200b30d81866200a7be565b9150506200b31f60e08301846200b0c3565b9998505050505050505050565b60208152600062008c4b60208301846200a7be565b8281526040602082015260006200a93e60408301846200a7be565b6000602082840312156200b36f57600080fd5b815162008c4b816200a5dd565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200b3b88160048501602087016200a798565b919091016004019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156200407557620040756200b3c6565b6040815260006200b42060408301856200ad49565b905082151560208301529392505050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062008c4b60808301846200a7be565b81516001600160a01b03168152610140810160208301516200b4a760208401826001600160a01b03169052565b5060408301516200b4c360408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200b548576200b5486200b3c6565b5060010190565b80820281158282048414176200407557620040756200b3c6565b601f82111562000aa857600081815260208120601f850160051c810160208610156200b5925750805b601f850160051c820191505b8181101562001b36578281556001016200b59e565b815167ffffffffffffffff8111156200b5d0576200b5d06200a5f3565b6200b5e8816200b5e184546200b021565b846200b569565b602080601f8311600181146200b63e57600084156200b6075750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855562001b36565b600085815260208120601f198616915b828110156200b66f578886015182559484019460019091019084016200b64e565b50858210156200b6ac57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8051825260006020820151604060208501526200a93e60408501826200a7be565b8281526040602082015260006200a93e60408301846200b6bc565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b168152600082516200b7378160148501602087016200a798565b919091016014019392505050565b6000826060808201846000805b60038110156200b7ed578584038952825180518086526020918201918087019190600582901b88018101865b838110156200b7d557898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c90526200b7c18c8401826200a7be565b96840196958401959250506001016200b77e565b509c81019c975095909501945050506001016200b752565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b838110156200b8405781516001600160a01b0316855293820193908201906001016200b819565b5050868303818801526200b855838b6200acdf565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b838110156200b93257601f198884030185528151610160815185528782015188860152888201516200b8b78a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e0808301519086015261010080830151908601526101208083015190860152610140918201519185018190526200b91d818601836200a7be565b9688019694505050908501906001016200b87b565b505089810360608b01526200b948818c6200b745565b9e9d5050505050505050505050505050565b6040815260006200b99860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200b99860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b8481526080602082015260006200b9ff60808301866200b6bc565b6001600160a01b038516604084015282810360608401526200862481856200a7be565b6040815260006200ba6060408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b82810360208401526200a93e81856200a7be565b6040815260006200ba6060408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6080815260006200bac760808301876200ad49565b6001600160a01b038616602084015282810360408401526200baea81866200a7be565b915050821515606083015295945050505050565b6040815260006200bb3c60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200bb3c60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106200bbf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c60208501528160408501526200bc288285018d6200a7be565b92506200bc39606085018c6200bbc0565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200bc878184602088016200a798565b8351908301906200bc9d8183602088016200a798565b01949350505050565b60006101406001600160a01b03808e1684528c60208501528160408501526200bcd28285018d6200a7be565b91506200bce3606085018c6200bbc0565b8960808501528860a08501528760c085015280871660e0850152808616610100850152508281036101208401526200bd1c81856200a7be565b9d9c50505050505050505050505050565b6000806000606084860312156200bd4357600080fd5b835160ff811681146200bd5557600080fd5b602085015160409095015190969495509392505050565b6001600160a01b03831681526040602082015260006200a93e60408301846200a7be565b60006101008083526200bda68184018b6200a816565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200be1e60608301856200a7be565b9050826040830152949350505050565b818103818111156200407557620040756200b3c6565b825160009082906020808701845b838110156200be70578151855293820193908201906001016200be52565b5050948252509092019392505050565b600082601f8301126200be9257600080fd5b815160206200bea56200a6d1836200a871565b82815260059290921b840181019181810190868411156200bec557600080fd5b8286015b848110156200a8fa57805183529183019183016200bec9565b600080604083850312156200bef657600080fd5b825167ffffffffffffffff808211156200bf0f57600080fd5b6200bf1d868387016200be80565b935060208501519150808211156200bf3457600080fd5b506200b017858286016200be8056fe608060405234801561001057600080fd5b5060405161030638038061030683398101604081905261002f91610037565b600055610050565b60006020828403121561004957600080fd5b5051919050565b6102a78061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063f9ae35a214610062575b600080fd5b61004e61004936600461012b565b610075565b604051901515815260200160405180910390f35b61004e610070366004610174565b61010e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167ff9ae35a200000000000000000000000000000000000000000000000000000000148061010857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054610120906060880135610236565b159695505050505050565b60006020828403121561013d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461016d57600080fd5b9392505050565b60008060008060008587036101e081121561018e57600080fd5b6101808082121561019e57600080fd5b8796508601359450506101a085013567ffffffffffffffff808211156101c357600080fd5b908701906060828a0312156101d757600080fd5b9093506101c087013590808211156101ee57600080fd5b818801915088601f83011261020257600080fd5b81358181111561021157600080fd5b89602082850101111561022357600080fd5b9699959850939650602001949392505050565b60008261026c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fea26469706673582212205dfaf57d0502300f4f46fee2111ad23463fa3ccb371e514ca536b55c2f60166364736f6c6343000813003360a060405234801561001057600080fd5b50604051610b98380380610b9883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b016100976000396000818160890152818160f101526102490152610b016000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631626ba7e1461003b5780638b0f483414610084575b600080fd5b61004e610049366004610449565b6100d0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ab7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007b565b6000806000838060200190518101906100e991906106ee565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e91906107e8565b90508561021084837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b14610247576040517f0af806e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166353f00b14303389856000801b8960405160200161029c9190610801565b604051602081830303815290604052896040516020016102bc9190610939565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016102ed9796959493929190610a17565b602060405180830381865afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190610a82565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561038a5761038a610338565b60405290565b604051610180810167ffffffffffffffff8111828210171561038a5761038a610338565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103fb576103fb610338565b604052919050565b600067ffffffffffffffff82111561041d5761041d610338565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561045c57600080fd5b82359150602083013567ffffffffffffffff81111561047a57600080fd5b8301601f8101851361048b57600080fd5b803561049e61049982610403565b6103b4565b8181528660208385010111156104b357600080fd5b816020840160208301376000602083830101528093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b8051610503816104d3565b919050565b805163ffffffff8116811461050357600080fd5b8051801515811461050357600080fd5b60005b8381101561054757818101518382015260200161052f565b50506000910152565b600082601f83011261056157600080fd5b815161056f61049982610403565b81815284602083860101111561058457600080fd5b61059582602083016020870161052c565b949350505050565b6000606082840312156105af57600080fd5b6105b7610367565b905081516105c4816104d3565b815260208281015190820152604082015167ffffffffffffffff8111156105ea57600080fd5b6105f684828501610550565b60408301525092915050565b60006060828403121561061457600080fd5b61061c610367565b9050815167ffffffffffffffff8082111561063657600080fd5b818401915084601f83011261064a57600080fd5b815160208282111561065e5761065e610338565b8160051b61066d8282016103b4565b928352848101820192828101908985111561068757600080fd5b958301955b848710156106a55786518252958301959083019061068c565b87525050858101519350828411156106bc57600080fd5b6106c88785880161059d565b908501525060408401519150808211156106e157600080fd5b506105f684828501610550565b6000808284036101a081121561070357600080fd5b6101808082121561071357600080fd5b61071b610390565b9150610726856104f8565b8252610734602086016104f8565b6020830152610745604086016104f8565b6040830152606085015160608301526080850151608083015261076a60a08601610508565b60a083015260c085015160c083015260e085015160e083015261010080860151818401525061012061079d81870161051c565b908301526101408581015190830152610160808601519083015284015190925067ffffffffffffffff8111156107d257600080fd5b6107de85828601610602565b9150509250929050565b6000602082840312156107fa57600080fd5b5051919050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610847602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161086f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161089b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108d08285018215159052565b5050610140838101519083015261016092830151929091019190915290565b6000815180845261090781602086016020860161052c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825160608383015280516080840181905260009291820190839060a08601905b8083101561097e578351825292840192600192909201919084019061095e565b508387015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091508186820301604087015273ffffffffffffffffffffffffffffffffffffffff8351168152838301518482015260408301519350606060408201526109ef60608201856108ef565b935050604086015191508085840301606086015250610a0e82826108ef565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a0830152610a6260e08301856108ef565b82810360c0840152610a7481856108ef565b9a9950505050505050505050565b600060208284031215610a9457600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610ac457600080fd5b939250505056fea2646970667358221220a3f10e64462f999b7cb9a5828ea8e7a4173e75ba07dbbc1415b24cc0e08041d564736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c634300081300336578706563746564207a65726f20636162696e657420666f7220706c61696e20637265617465a2646970667358221220a61485558bc5d9fefd3a35245ceb3d322c5416046c66acef1ed9d05a933425ff64736f6c63430008130033","sourceMap":"384:22060:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20808:745;;;:::i;:::-;;518:116;;;:::i;17080:656::-;;;;;;:::i;:::-;;:::i;595:17:95:-;;;;;-1:-1:-1;;;;;595:17:95;;;;;;-1:-1:-1;;;;;2672:55:105;;;2654:74;;2642:2;2627:18;595:17:95;;;;;;;;748:20:100;;;;;-1:-1:-1;;;;;748:20:100;;;1586:74:96;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2161:134:32:-;;;:::i;:::-;;;;;;;:::i;800:20:100:-;;;;;-1:-1:-1;;;;;800:20:100;;;1025:26:99;;;;;-1:-1:-1;;;;;1025:26:99;;;1509:1505:97;;;:::i;987:253:44:-;;;;;;:::i;:::-;;:::i;:::-;;;6558:25:105;;;6546:2;6531:18;987:253:44;6412:177:105;3024:158:96;;;:::i;16094:887:97:-;;;;;;:::i;:::-;;:::i;3420:1579::-;;;:::i;12015:1028::-;;;;;;:::i;:::-;;:::i;689:157::-;;;;;;:::i;:::-;;:::i;2930:133:32:-;;;:::i;2631:141::-;;;:::i;1125:32:98:-;;;;;-1:-1:-1;;;;;1125:32:98;;;452:451:44;;;;;;:::i;:::-;;:::i;:::-;;;8913:14:105;;8906:22;8888:41;;8876:2;8861:18;452:451:44;8748:187:105;2447:178:32;;;:::i;:::-;;;;;;;:::i;21646:796:97:-;;;:::i;6455:1011::-;;;;;;:::i;:::-;;:::i;572:17:95:-;;;;;-1:-1:-1;;;;;572:17:95;;;7833:1525:97;;;:::i;1232:22:98:-;;;;;-1:-1:-1;;;;;1232:22:98;;;2301:140:32;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;13129:2071:97:-;;;;;;:::i;:::-;;:::i;19987:695::-;;;:::i;5631:754::-;;;;;;:::i;:::-;;:::i;978:41:99:-;;;;;-1:-1:-1;;;;;978:41:99;;;9438:1260:97;;;:::i;15300:702::-;;;:::i;18790:949::-;;;:::i;17796:911::-;;;:::i;549:17:95:-;;;;;-1:-1:-1;;;;;549:17:95;;;852:251:97;;;;;;:::i;:::-;;:::i;1866:141:32:-;;;:::i;865:21:99:-;;;;;-1:-1:-1;;;;;865:21:99;;;2744:190:96;;;:::i;1246:1168:44:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;892:31:99:-;;;;;-1:-1:-1;;;;;892:31:99;;;929:43;;;;;-1:-1:-1;;;;;929:43:99;;;5179:952:44;;;;;;:::i;:::-;;:::i;774:20:100:-;;;;;-1:-1:-1;;;;;774:20:100;;;407:409:43;;;;;;:::i;:::-;;:::i;5071:490:97:-;;;:::i;1057:36:99:-;;;;;-1:-1:-1;;;;;1057:36:99;;;2013:142:32;;;:::i;3606:1421:44:-;;;;;;:::i;:::-;;:::i;10745:1216:97:-;;;;;;:::i;:::-;;:::i;1572:26:26:-;;;;;;;;;1100:19:98;;;;;-1:-1:-1;;;;;1100:19:98;;;20808:745:97;20900:54;20957:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:96;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:96;;;;;;;-1:-1:-1;;;;;7569:11:96;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;20957:21:97;21012:5;;21116:13;;:41;;;;;20900:78;;-1:-1:-1;;;;;;21012:5:97;;;;20988:13;;21116;;;;:26;;:41;;21012:5;;20900:78;;21116:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21260:9;;21271:13;;:26;;;;;21078:79;;-1:-1:-1;21251:68:97;;-1:-1:-1;;;;;21271:13:97;;;;:18;;:26;;21290:6;;21271:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21251:68;;;;;;;;;;;;;;;;;:8;:68::i;:::-;21329:59;21341:4;:15;;;21340:16;21329:59;;;;;;;;;;;;;;;;;:10;:59::i;:::-;21398:64;21407:4;:17;;;21434:1;21426:10;;21398:64;;;;;;;;;;;;;;;;;:8;:64::i;:::-;21472:74;21489:4;:14;;;21514:1;21472:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;20890:663;;;20808:745::o;518:116::-;614:13;:11;:13::i;:::-;518:116::o;17080:656::-;17338:163;;;;;;;;-1:-1:-1;;;;;17338:163:97;;;;;;;;;;;;;;;;17571:60;;;;;17587:43;17571:60;;;18240:98:105;17571:15:97;;;;18213:18:105;;17571:60:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17641:13:97;;17701:9;;;;;;;;;-1:-1:-1;17701:9:97;;;17712:16;;;;;;;;;;;;17641:88;;;;-1:-1:-1;;;;;17641:13:97;;;;-1:-1:-1;17641:44:97;;-1:-1:-1;17641:88:97;;17686:5;;17693:6;;17701:9;17641:88;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17641:88:97;;;;;;;;;;;;:::i;:::-;;;17271:465;17080:656;;;;:::o;1586:74:96:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:96;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:134:32:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:32;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;1509:1505:97:-;1624:5;;1554:57;;1614:20;;-1:-1:-1;;;;;1624:5:97;1631:2;1614:9;:20::i;:::-;1554:80;-1:-1:-1;1645:12:97;;;1753:53;1554:80;1645:12;1780:6;1788:7;1797:8;1753:23;:53::i;:::-;1894:54;;;;;1910:37;1894:54;;;18240:98:105;1644:162:97;;-1:-1:-1;1644:162:97;;-1:-1:-1;1644:162:97;-1:-1:-1;1894:15:97;;;;18213:18:105;;1894:54:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1958:13:97;;2011:5;;2027:9;;;;;;;;-1:-1:-1;2027:9:97;;1958:86;;;;;-1:-1:-1;;;;;1958:13:97;;;;-1:-1:-1;1958:44:97;;-1:-1:-1;1958:86:97;;2011:5;;;;2019:6;;2027:9;2038:5;;1958:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1958:86:97;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2137:44:97;;;;;;;;2096:38;2137:44;;;;;;;;;;;;;;;;;;;;;;2208:5;;2191:43;;-1:-1:-1;;;;;2208:5:97;2216:4;2137:44;2191:8;:43::i;:::-;2364:13;;2417:5;;2433:9;;;;;;;;-1:-1:-1;2433:9:97;;;2364:86;;;;;-1:-1:-1;;;;;;;;;2364:13:97;;;;:44;;:86;;2417:5;;;;2425:6;;2444:5;;2364:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2364:86:97;;;;;;;;;;;;:::i;:::-;2296:154;;;;2487:16;317:28:27;309:37;;-1:-1:-1;;;;;2506:11:97;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2594:5;;2579:56;;;;;;;;;2602:3;2579:56;-1:-1:-1;;;;;2579:56:97;;;;;;;;;;;2487:32;;-1:-1:-1;2579:56:97;;2594:5;;;;2607;2614:9;2594:5;2579:6;:56::i;:::-;2675:21;;;;;;;;6558:25:105;;;2675:11:97;;;;6531:18:105;;2675:21:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2758:5:97;;2741:49;;-1:-1:-1;;;;;2758:5:97;;2778:11;2741:8;:49::i;:::-;2857:54;;;;;2873:37;2857:54;;;18240:98:105;2857:15:97;;;;18213:18:105;;2857:54:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2921:13:97;;2974:5;;2990:9;;;;;;;;-1:-1:-1;2990:9:97;;2921:86;;;;;-1:-1:-1;;;;;2921:13:97;;;;-1:-1:-1;2921:44:97;;-1:-1:-1;2921:86:97;;2974:5;;;;2982:6;;2990:9;3001:5;;2921:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2921:86:97;;;;;;;;;;;;:::i;:::-;;;1544:1470;;;;;;;;1509:1505::o;987:253:44:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;22411:2:105;1067:63:44;;;22393:21:105;22450:2;22430:18;;;22423:30;22489:34;22469:18;;;22462:62;22560:5;22540:18;;;22533:33;22583:19;;1067:63:44;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:96:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:96;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:96;-1:-1:-1;;;;;3146:26:96;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;16094:887:97:-;16416:12;;16406:27;;;;;16416:16;;;16406:27;;;8888:41:105;16406:9:97;;;;8861:18:105;;16406:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16444:54;16501:163;;;;;;;;16583:7;-1:-1:-1;;;;;16501:163:97;;;;;16611:4;16501:163;;;;16642:11;16501:163;;;16444:220;;16706:67;16715:5;16722:4;16728:44;;;;;;;;16759:1;16728:44;;;;;;;;;;;;;;;;;;;16706:8;:67::i;:::-;16833:54;;;;;16849:37;16833:54;;;18240:98:105;16833:15:97;;;;18213:18:105;;16833:54:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16897:13:97;;16957:9;;;;;;;;16897:13;16957:9;;16897:77;;;;;-1:-1:-1;;;;;16897:13:97;;;;-1:-1:-1;16897:44:97;;-1:-1:-1;16897:77:97;;16942:5;;16949:6;;16968:5;;16897:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16897:77:97;;;;;;;;;;;;:::i;:::-;;;16333:648;16094:887;;;;;;:::o;3420:1579::-;3546:5;;3476:57;;3536:20;;-1:-1:-1;;;;;3546:5:97;3553:2;3536:9;:20::i;:::-;3476:80;-1:-1:-1;3567:12:97;;;3675:53;3476:80;3567:12;3702:6;3710:7;3719:8;3675:23;:53::i;:::-;3816:54;;;;;3832:37;3816:54;;;18240:98:105;3566:162:97;;-1:-1:-1;3566:162:97;;-1:-1:-1;3566:162:97;-1:-1:-1;3816:15:97;;;;18213:18:105;;3816:54:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3880:13:97;;3933:5;;3949:9;;;;;;;;-1:-1:-1;3949:9:97;;3880:86;;;;;-1:-1:-1;;;;;3880:13:97;;;;-1:-1:-1;3880:44:97;;-1:-1:-1;3880:86:97;;3933:5;;;;3941:6;;3949:9;3960:5;;3880:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3880:86:97;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;4059:44:97;;;;;;;;4018:38;4059:44;;;;;;;;;;;;;;;;;;4141:5;;4168:16;;4186:32;;4059:44;;4113:106;;-1:-1:-1;;;;;4141:5:97;;;;4149:4;;4059:44;;4168:16;;4186:32;;4197:20;;4186:32;6558:25:105;;;6546:2;6531:18;;6412:177;4186:32:97;;;;;;;;;;;;;4113:19;:106::i;12015:1028::-;12206:32;;;;;-1:-1:-1;;;;;12216:21:97;;;;12206:32;;;8888:41:105;12206:9:97;;;;8861:18:105;;12206:32:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12306:163:97;;;;;;;;-1:-1:-1;;;;;12306:163:97;;;;;;;;;;;;;;;;12539:60;;;;;12555:43;12539:60;;;18240:98:105;12306:163:97;;-1:-1:-1;12539:15:97;;-1:-1:-1;12539:15:97;;18213:18:105;;12539:60:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12609:13:97;;-1:-1:-1;;;;;12609:13:97;;-1:-1:-1;12609:34:97;;-1:-1:-1;12670:5:97;12609:13;12736:32;12782:34;12609:13;12888:15;:13;:15::i;:::-;12877:27;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12877:27:97;;;;;;-1:-1:-1;12929:96:97;;;12965:16;;;;;;;;12929:96;;-1:-1:-1;;;;12929:96:97;;;13014:9;;;;;;;;;;12929:96;;;;;;;12918:108;;12877:27;;12918:108;;12877:27;;12918:108;;:::i;:::-;;;;;;;;;;;;;12609:427;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12196:847;12015:1028;;;;:::o;689:157::-;772:67;781:5;788:4;794:44;;;;;;;;825:1;794:44;;;;;;;;;;;;;;;;;;;772:8;:67::i;:::-;689:157;;:::o;2930:133:32:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:32;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:32;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;452:451:44:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:44;;736:115;;;-1:-1:-1;;877:19:44;;;;452:451;-1:-1:-1;;;452:451:44:o;2447:178:32:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;21646:796:97:-;21734:54;21791:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:96;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:96;;;;;;;-1:-1:-1;;;;;7569:11:96;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;21791:21:97;21846:5;;21734:78;;-1:-1:-1;;;;;;21846:5:97;21931:29;21846:5;21734:78;21822:13;21931:7;:29::i;:::-;22014:19;22054:1;22036:20;;;;;:::i;:::-;6558:25:105;;;6546:2;6531:18;22036:20:97;;;;;;;;;;;;;;;;;;;;;;;22014:42;;22066:48;22080:5;22106;22066:13;:48::i;:::-;22163:13;;:41;;;;;22125:35;;-1:-1:-1;;;;;22163:13:97;;:26;;:41;;22190:5;;22197:6;;22163:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22224:9;;22235:13;;:26;;;;;22125:79;;-1:-1:-1;22215:68:97;;-1:-1:-1;;;;;22235:13:97;;;;:18;;:26;;22254:6;;22235:26;;;:::i;22215:68::-;22293:57;22304:4;:15;;;22293:57;;;;;;;;;;;;;;;;;:10;:57::i;:::-;22360:75;22377:4;:14;;;22402:5;22360:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;21724:718;;;;21646:796::o;6455:1011::-;6709:32;;;;;-1:-1:-1;;;;;6719:21:97;;;;6709:32;;;8888:41:105;6709:9:97;;;;8861:18:105;;6709:32:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6752:54;6809:163;;;;;;;;6891:7;-1:-1:-1;;;;;6809:163:97;;;;;6919:4;6809:163;;;;6950:11;6809:163;;;6752:220;;6982:17;7023:6;7012:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;7012:18:97;;;;;;;7002:29;;7012:18;7002:29;;;;7085:13;;:44;;;-1:-1:-1;;;;;26603:55:105;;;7085:44:97;;;26585:74:105;26675:18;;;26668:34;;;7002:29:97;;-1:-1:-1;7076:61:97;;7085:13;;;:26;;26558:18:105;;7085:44:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7131:5;7076:8;:61::i;:::-;7210:16;;7228:20;;;;;;6558:25:105;;;7176:79:97;;7195:5;;7202:6;;-1:-1:-1;;;;;7210:16:97;;;;6531:18:105;7228:20:97;;;;;;;;;;;;7250:4;7176:18;:79::i;:::-;7348:13;;:39;;;;;-1:-1:-1;;;;;26603:55:105;;;7348:39:97;;;26585:74:105;26675:18;;;26668:34;;;7339:59:97;;7348:13;;:21;;26558:18:105;;7348:39:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7389:8;7339;:59::i;:::-;7437:22;7445:5;7452:6;7437:7;:22::i;7833:1525::-;7953:5;;7886:54;;7943:19;;-1:-1:-1;;;;;7953:5:97;;7943:9;:19::i;:::-;7963:1;7943:22;;;;;;;;:::i;:::-;;;;;;;7886:79;;8117:22;8156:1;8142:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8142:16:97;;8117:41;;8168:17;8209:6;8198:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8198:18:97;;;;;;;8188:29;;8198:18;8188:29;;;;8271:13;;8306:5;;8271:53;;;-1:-1:-1;;;;;8306:5:97;;;8271:53;;;26585:74:105;26675:18;;;26668:34;;;8188:29:97;;-1:-1:-1;8262:70:97;;8271:13;;;:26;;26558:18:105;;8271:53:97;26411:297:105;8262:70:97;8410:60;;;;;8426:43;8410:60;;;18240:98:105;8410:15:97;;;;18213:18:105;;8410:60:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8480:13:97;;8533:5;;8549:9;;;;;;;;-1:-1:-1;8549:9:97;;8480:86;;;;;-1:-1:-1;;;;;8480:13:97;;;;-1:-1:-1;8480:44:97;;-1:-1:-1;8480:86:97;;8533:5;;;;8541:6;;8549:9;8560:5;;8480:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8480:86:97;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8625:5:97;;8609:37;;-1:-1:-1;;;;;8625:5:97;8633:6;8625:5;8609:7;:37::i;:::-;8683:16;317:28:27;309:37;;-1:-1:-1;;;;;8702:11:97;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8847;;8900:5;;8916:9;;;;;;;;8780:27;8916:9;;;8847:86;;;;;8683:32;;-1:-1:-1;8780:27:97;;;;-1:-1:-1;;;;;8847:13:97;;;;:44;;:86;;8900:5;;;;;8908:6;;8927:5;;8847:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8847:86:97;;;;;;;;;;;;:::i;:::-;9007:5;;8992:56;;;;;;;;;9015:3;8992:56;-1:-1:-1;;;;;8992:56:97;;;;;;;;;;;8779:154;;-1:-1:-1;8779:154:97;;-1:-1:-1;8992:56:97;;9007:5;;8779:154;;9007:5;8992:6;:56::i;:::-;9089:21;;;;;;;;6558:25:105;;;9089:11:97;;;;6531:18:105;;9089:21:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9169:5:97;;9153:31;;-1:-1:-1;;;;;9169:5:97;9177:6;9153:7;:31::i;:::-;9276:5;;9261:90;;;;;;;;;9284:3;9261:90;-1:-1:-1;;;;;9261:90:97;;;;;;;;;;;;;9276:5;;9289;9296:9;9307:43;9261:6;:90::i;2301:140:32:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13129:2071:97;13414:175;;;;;;;;13496:6;;-1:-1:-1;;;;;13496:6:97;13414:175;;13523:19;13414:175;;;;;;;;13569:9;;;;;;;13357:54;13569:9;;;13414:175;;;;;13640:29;;13648:5;;13414:175;;13640:7;:29::i;:::-;13709:27;13739:15;:13;:15::i;:::-;13793:9;;;;;;;;;13764:26;13793:9;;;13941:13;;14113:17;;13709:45;;-1:-1:-1;13793:9:97;;13764:26;;-1:-1:-1;;;;;13941:13:97;;:34;;14028:5;;13764:26;;14113:17;;13709:45;;14113:17;;:::i;:::-;;;;;;;;;;;;;14103:28;;;;;;14149:15;14190:1;14182:10;;14244:5;14233:17;;;;;;;;:::i;:::-;;;;-1:-1:-1;;14233:17:97;;;;;;-1:-1:-1;14300:100:97;;;14336:16;;;;;;;;14300:100;;-1:-1:-1;;;;14300:100:97;;;;;;;;;14268:150;;14233:17;;14268:150;;14233:17;;14268:150;;:::i;:::-;;;;-1:-1:-1;;14268:150:97;;;;;;;;;;13913:529;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;13913:529:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;14503:13;;14495:31;;13913:529;;-1:-1:-1;;;;;;;;;;;14503:13:97;;14495:31;;13913:529;;14495:31;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14453:73;;;;14603:20;14615:7;14614:8;14603:10;:20::i;:::-;14723:470;14745:10;14809:33;;;14860:5;14891:1;14953:5;14942:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;14932:28;;;;;;14978:15;15032:6;15021:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;15011:29;;;;;;15097:6;:18;;;15133:13;15164:5;14769:414;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;14769:414:97;;;;;;;;;;;;;;;;;;;;;;;;;;;14723:8;:470::i;:::-;13238:1962;;;;;;13129:2071;;:::o;19987:695::-;20065:54;20122:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:96;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:96;;;;;;;-1:-1:-1;;;;;7569:11:96;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;20122:21:97;20176:13;;:26;;;;;20065:78;;-1:-1:-1;20153:20:97;;-1:-1:-1;;;;;20176:13:97;;;;:18;;:26;;20065:78;;20176:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20236:5;;20153:49;;-1:-1:-1;;;;;;20236:5:97;20253:29;20236:5;20268:6;20212:13;20253:7;:29::i;:::-;20331:13;;:41;;;;;20293:35;;-1:-1:-1;;;;;20331:13:97;;:26;;:41;;20358:5;;20365:6;;20331:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20293:79;;20383:50;20392:4;:9;;;20403:12;20383:50;;;;;;;;;;;;;;;;;:8;:50::i;:::-;20443:57;20454:4;:15;;;20443:57;;;;;;;;;;;;;;;;;:10;:57::i;:::-;20510:81;20519:4;:17;;;20546:1;20538:10;;20510:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;20601:74;20618:4;:14;;;20643:1;20601:74;;;;;;;;;;;;;;;;;:8;:74::i;5631:754::-;5822:32;;;;;-1:-1:-1;;;;;5832:21:97;;;;5822:32;;;8888:41:105;5822:9:97;;;;8861:18:105;;5822:32:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5865:54;5922:163;;;;;;;;6004:7;-1:-1:-1;;;;;5922:163:97;;;;;6032:4;5922:163;;;;6063:11;5922:163;;;5865:220;;6095:17;6136:6;6125:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;6125:18:97;;;;;;;6115:29;;6125:18;6115:29;;;;6198:13;;:44;;;-1:-1:-1;;;;;26603:55:105;;;6198:44:97;;;26585:74:105;26675:18;;;26668:34;;;6115:29:97;;-1:-1:-1;6189:61:97;;6198:13;;;:26;;26558:18:105;;6198:44:97;26411:297:105;6189:61:97;6289:28;6297:5;6304:6;6312:4;6289:7;:28::i;:::-;6356:22;6364:5;6371:6;6356:7;:22::i;9438:1260::-;9533:54;9590:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:96;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:96;;;;;;;-1:-1:-1;;;;;7569:11:96;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;9590:21:97;9665:5;:10;9533:78;;-1:-1:-1;9657:34:97;;-1:-1:-1;;;;;9665:10:97;9533:78;9665:10;9657:7;:34::i;:::-;9742:28;9773:15;:13;:15::i;:::-;9742:46;;9798:28;9829:40;9849:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6554:464:96;;;;;;;;-1:-1:-1;6554:464:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6841:19;6554:464;;;;;;;;6930:23;6554:464;;;;;;;;;;;6438:587;9829:40:97;9798:71;;10049:23;10075:13;;;;;;;;;-1:-1:-1;;;;;10075:13:97;-1:-1:-1;;;;;10075:29:97;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10252:12;;;;;;;;;;;;;;;;10187:78;;10049:57;;-1:-1:-1;10171:15:97;;;;10210:40;;10187:78;;10252:12;10187:78;;;:::i;:::-;;;;-1:-1:-1;;10187:78:97;;;;;;;;;;;;;;;;;;;;;;;10171:95;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10276:13:97;;10345:5;:10;-1:-1:-1;;;;;10276:13:97;;;;-1:-1:-1;10276:34:97;;-1:-1:-1;10345:10:97;10276:13;10396:39;10411:6;10419:15;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;10396:39:97;10449:15;10486:1;10478:10;;10513:6;10502:18;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10502:18:97;;;;;;-1:-1:-1;10562:105:97;;;10598:16;;;;;;;;10562:105;;-1:-1:-1;;;;10562:105:97;;;10647:18;;10502;;;10562:105;;;10647:18;;10658:6;;10647:18;;:::i;:::-;;;;-1:-1:-1;;10647:18:97;;;;;;;;;10562:105;;10534:147;;;;10647:18;10534:147;;:::i;:::-;;;;;;;;;;;;;10276:415;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9523:1175;;;;9438:1260::o;15300:702::-;15520:156;;;;;;;;15584:6;;-1:-1:-1;;;;;15584:6:97;;;15520:156;;15610:19;15520:156;;;;;;;;15656:9;;;;;;;15463:54;15656:9;;;15520:156;;;;15735:5;:10;15520:156;;15727:34;;15735:10;;;;15520:156;;15727:7;:34::i;:::-;15831:61;;;;;15847:44;15831:61;;;18240:98:105;15831:15:97;;;;18213:18:105;;15831:61:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15902:13:97;;15947:5;:10;15967:9;;;;;;;;;-1:-1:-1;15967:9:97;;;15978:16;;;;;;;;;;;;15902:93;;;;-1:-1:-1;;;;;15902:13:97;;;;-1:-1:-1;15902:44:97;;-1:-1:-1;15902:93:97;;15947:10;;;;15959:6;;15902:93;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15902:93:97;;;;;;;;;;;;:::i;18790:949::-;19008:13;;18978:45;;18950:25;;-1:-1:-1;;;;;19008:13:97;;18978:45;;;:::i;:::-;-1:-1:-1;;;;;2672:55:105;;;2654:74;;2642:2;2627:18;18978:45:97;;;;;;;;;;;;;;;;;;;;;;;18950:73;;19033:54;19090:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:96;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:96;;;;;;;-1:-1:-1;;;;;7569:11:96;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;19090:21:97;19033:78;;19162:40;19178:7;19188:6;19196:5;19162:7;:40::i;:::-;19322:13;;19267:27;;;;-1:-1:-1;;;;;19322:13:97;:44;19388:7;19398:6;19417:15;:13;:15::i;:::-;19406:27;;;;;;;;:::i;:::-;;;;-1:-1:-1;;19406:27:97;;;;;;19449:1;19435:16;;;;;;;;;19322:139;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19322:139:97;;;;;;;;;;;;:::i;:::-;19266:195;;;;19562:170;19584:7;-1:-1:-1;;;;;19584:24:97;;19609:54;19624:5;19631:13;;;;;;;;;-1:-1:-1;;;;;19631:13:97;-1:-1:-1;;;;;19631:29:97;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;19609:54:97;19665:9;19584:91;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19562:170;;19689:33;19562:8;:170::i;17796:911::-;17993:54;18050:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7569:11:96;;7615:9;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;7261:163:96;;;;;;;-1:-1:-1;;;;;7569:11:96;7261:163;;7582:31;7261:163;;;;;;;;;;;;7437:195;18050:21:97;18138:5;;17993:78;;-1:-1:-1;18122:38:97;;-1:-1:-1;;;;;18138:5:97;17993:78;18138:5;18122:7;:38::i;:::-;18280:13;;18346:5;;18225:27;;;;-1:-1:-1;;;;;18280:13:97;;;;:44;;18346:5;18354:6;18373:15;:13;:15::i;:::-;18362:27;;;;;;;;:::i;:::-;;;;-1:-1:-1;;18362:27:97;;;;;;18405:1;18391:16;;;;;;;;;18280:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18280:137:97;;;;;;;;;;;;:::i;:::-;18552:5;;18599:13;;:31;;;;;;;;18224:193;;-1:-1:-1;18224:193:97;;-1:-1:-1;18514:186:97;;-1:-1:-1;;;;;18552:5:97;;;;18536:40;;18577:54;;18224:193;;18599:13;;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;852:251;1006:44;;;;;;;;-1:-1:-1;1006:44:97;;;;;;;;;;;;;;;;;;1052:16;;1070;;;;;6558:25:105;;;960:136:97;;993:5;;1000:4;;1006:44;;-1:-1:-1;;;;;1052:16:97;;6531:18:105;1070:16:97;6412:177:105;1866:141:32;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:96;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:96;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;26603:55:105;;;2840:61:96;;;26585:74:105;26675:18;;;26668:34;26558:18;;2840:61:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:96;2823:8;:104::i;1246:1168:44:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;29531:2:105;1350:64:44;;;29513:21:105;29570:2;29550:18;;;29543:30;29609:34;29589:18;;;29582:62;29680:6;29660:18;;;29653:34;29704:19;;1350:64:44;29329:400:105;1350:64:44;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:44;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:44;-1:-1:-1;1246:1168:44;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;26585:74:105;;;2221:17:26;26675:18:105;;;26668:34;2196:43:26;;;;;;;;;26558:18:105;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;5179:952:44:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:44;;5179:952;-1:-1:-1;5179:952:44:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:44;;5179:952;-1:-1:-1;;;5179:952:44:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:44:o;407:409:43:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:43;791:3;781:20;;407:409;-1:-1:-1;;407:409:43:o;5071:490:97:-;5191:189;;;;;;;;-1:-1:-1;5191:189:97;;;5304:36;5191:189;;;;;;;;;;;;;;;;;;;;;;5391:54;;;;;5407:37;5391:54;;;18240:98:105;5391:15:97;;;;18213:18:105;;5391:54:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5520:13:97;;:34;;;;;-1:-1:-1;;;;;5520:13:97;;;;-1:-1:-1;5520:20:97;;-1:-1:-1;5520:34:97;;5541:6;;5520:13;;:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2013:142:32;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:32;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:44:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:44:o;10745:1216:97:-;11057:12;;11047:27;;;;;11057:16;;;11047:27;;;8888:41:105;11047:9:97;;;;8861:18:105;;11047:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11085:54;11142:163;;;;;;;;11224:7;-1:-1:-1;;;;;11142:163:97;;;;;11252:4;11142:163;;;;11283:11;11142:163;;;11085:220;;11347:67;11356:5;11363:4;11369:44;;;;;;;;11400:1;11369:44;;;;;;;;;;;;;;;;;;;11347:8;:67::i;:::-;11474:54;;;;;11490:37;11474:54;;;18240:98:105;11474:15:97;;;;18213:18:105;;11474:54:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11538:13:97;;-1:-1:-1;;;;;11538:13:97;;-1:-1:-1;11538:34:97;;-1:-1:-1;11599:5:97;11538:13;11665:32;11711:34;11538:13;11817:15;:13;:15::i;:::-;11806:27;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11806:27:97;;;;;;11858:85;;;;;;;;11806:27;11858:85;;;;;;11932:9;;;;;;;-1:-1:-1;11932:9:97;;11858:85;;;;11847:97;;11806:27;;11847:97;;11806:27;;11847:97;;:::i;:::-;;;;;;;;;;;;;11538:416;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7557:68:96:-;7550:75;;7437:195;:::o;4377:185:26:-;4464:1;4459;:6;4455:101;;4486:31;4513:3;4486:31;;;;;;:::i;:::-;;;;;;;;4531:14;4540:1;4543;4531:8;:14::i;3425:191::-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;3904:185::-;3991:1;-1:-1:-1;;;;;3986:6:26;:1;-1:-1:-1;;;;;3986:6:26;;3982:101;;4013:31;4040:3;4013:31;;;;;;:::i;:::-;;;;;;;;4058:14;4067:1;4070;4058:8;:14::i;1667:955:96:-;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:96;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;2672:55:105;;;2654:74;;2642:2;2627:18;1819:38:96;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:96;:54;;;;-1:-1:-1;;;;;1803:54:96;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:96;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;31692:25:105;;;;-1:-1:-1;;;;;2216:13:96;31733:18:105;;;31726:83;31665:18;;2101:143:96;;;-1:-1:-1;;2101:143:96;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:96;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:96;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:96;:48;;;;-1:-1:-1;;;;;2366:48:96;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:96;:49;;;;-1:-1:-1;;;;;2478:49:96;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:96;:37;;;;-1:-1:-1;;;;;2537:37:96;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;2672:55:105;;;2654:74;;2642:2;2627:18;2592:23:96;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:96;:30;;;;-1:-1:-1;;;;;2585:30:96;;;;;;;;;;1667:955::o;7638:1252::-;7819:319;;;;;;;;7859:6;;-1:-1:-1;;;;;7859:6:96;;;7819:319;;7889:6;;;7819:319;;;;7786:30;7819:319;;;;;;7859:6;7713:57;7819:319;;;;;;;;;;;;;8007:15;7819:319;;;;8039:1;7819:319;;;;8057:4;7819:319;;;;7859:6;7819:319;;;;;;8105:22;7819:319;;;;8279:1;8232:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8232:49:96;;;;;;;;;;;;;;;;8222:59;;8296:9;8291:278;8315:7;:14;8311:1;:18;8291:278;;;8363:195;;;;;;;;8431:4;;-1:-1:-1;;;;;8431:4:96;8363:195;;8469:22;;8363:195;8469:22;;;6558:25:105;;;8363:195:96;;;;;;6531:18:105;8469:22:96;;;;;;;;;;;;8459:33;;;;;;8363:195;;;;8534:8;8523:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;8363:195;;;8350:7;8358:1;8350:10;;;;;;;;:::i;:::-;;;;;;:208;;;;8331:3;;;;;:::i;:::-;;;;8291:278;;;-1:-1:-1;8666:18:96;;8770:7;;8793:23;;;;8780:10;;;;8632:251;;8666:18;;;8737:23;;-1:-1:-1;;;;;8770:7:96;;;;8780:36;;8793:23;8780:36;:::i;:::-;8714:103;;-1:-1:-1;;;;;26603:55:105;;;8714:103:96;;;26585:74:105;26675:18;;;26668:34;26558:18;;8714:103:96;;;-1:-1:-1;;8714:103:96;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8864:9:96;:7;:9::i;:::-;-1:-1:-1;;;;;8632:12:96;;;:251;;;;:12;:251::i;:::-;7776:1114;7638:1252;;;;:::o;1408:1319:101:-;-1:-1:-1;;;1804:16:101;-1:-1:-1;;;;;1795:7:101;-1:-1:-1;;;;;;;;;;;;;;;1804:16:101;1937:9;1932:99;1956:6;:13;1952:1;:17;1932:99;;;2011:6;2018:1;2011:9;;;;;;;;:::i;:::-;;;;;;;1990:1;:18;1992:15;1997:6;2004:1;1997:9;;;;;;;;:::i;:::-;;;;;;;1992:4;:15::i;:::-;1990:18;;;;;;;;;;;;;;-1:-1:-1;1990:18:101;:30;;;;;;-1:-1:-1;;;;;1990:30:101;;;;;;;;;;-1:-1:-1;1990:30:101;;;;;;;;;;;;;;:::i;:::-;;;;;1971:3;;;;;:::i;:::-;;;;1932:99;;;;2093:23;2133:6;:13;2119:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2119:28:101;;2093:54;;2162:9;2157:96;2181:6;:13;2177:1;:17;2157:96;;;2227:15;2232:6;2239:1;2232:9;;;;;;;;:::i;2227:15::-;2215:6;2222:1;2215:9;;;;;;;;:::i;:::-;;;;;;;;;;:27;2196:3;;;;:::i;:::-;;;;2157:96;;;;2293:29;2325:12;2330:6;2325:4;:12::i;:::-;2293:44;;2385:12;2400:21;2408:12;2400:7;:21;;:::i;:::-;2385:36;;2488:22;2513:25;2522:12;2536:1;2513:8;:25;;:::i;:::-;2488:50;;2610:52;2665:1;:18;2667:12;2680:1;2667:15;;;;;;;;:::i;:::-;;;;;;;2665:18;;;;;;;;;;;2610:73;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:73:101;-1:-1:-1;;;;;2610:73:101;-1:-1:-1;;;;;2610:73:101;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2610:73:101;;;;-1:-1:-1;2702:4:101;;2708:5;;-1:-1:-1;2610:73:101;;-1:-1:-1;1408:1319:101;;-1:-1:-1;;;;;;;;;;;1408:1319:101:o;3265:313:96:-;3365:15;;;;;-1:-1:-1;;;;;2672:55:105;;3365:15:96;;;2654:74:105;3365:8:96;;;;2627:18:105;;3365:15:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3390:37:96;;;;;3404:4;3390:37;;;36318:41:105;;;36375:18;;;36368:50;;;36434:18;;;36427:50;;;36493:18;;;36486:50;3390:13:96;;-1:-1:-1;3390:13:96;;-1:-1:-1;36290:19:105;;3390:37:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3456:5;-1:-1:-1;;;;;3442:33:96;;3463:4;3469:5;3442:33;;;;;;;:::i;:::-;;;;;;;;3485:13;;:34;;;;;-1:-1:-1;;;;;3485:13:96;;;;:21;;:34;;3507:4;;3513:5;;3485:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3538:13:96;;:26;;;;;-1:-1:-1;;;;;2672:55:105;;;3538:26:96;;;2654:74:105;3529:42:96;;-1:-1:-1;3538:13:96;;;;-1:-1:-1;3538:19:96;;2627:18:105;;3538:26:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3566:4;3529:8;:42::i;2711:3375:98:-;2959:34;2996:503;;;;;;;;3036:5;:14;;;-1:-1:-1;;;;;2996:503:98;;;;;3074:5;:15;;;-1:-1:-1;;;;;2996:503:98;;;;;3121:1;-1:-1:-1;;;;;2996:503:98;;;;;3149:5;:15;;;2996:503;;;;3189:5;:16;;;2996:503;;;;3228:5;:13;;;2996:503;;;;;;3264:5;:13;;;2996:503;;;;3302:1;2996:503;;;;3323:18;2996:503;;;;3374:5;2996:503;;;;;;3465:23;2996:503;;;;3410:23;2996:503;;;2959:540;;3510:28;3553:83;3577:58;3592:12;3606:10;;;;;;;;;-1:-1:-1;;;;;3606:10:98;-1:-1:-1;;;;;3606:26:98;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3577:58;3553:12;;:23;:83::i;:::-;3724:17;;3715:27;;;;;-1:-1:-1;;;;;2672:55:105;;;3715:27:98;;;2654:74:105;3510:126:98;;-1:-1:-1;3715:8:98;;;;2627:18:105;;3715:27:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3759:22:98;;3799:7;;3809:23;;;;3752:81;;;;;-1:-1:-1;;;;;3799:7:98;;;3752:81;;;26585:74:105;26675:18;;;26668:34;;;;3752:38:98;;;-1:-1:-1;3752:38:98;;-1:-1:-1;26558:18:105;;3752:81:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3924:15:98;;;3937:1;3924:15;;;;;;;;3899:22;;3924:15;;;;;;;;;;-1:-1:-1;3924:15:98;3899:40;;3968:5;:15;;;3949:6;3956:1;3949:9;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;3949:35:98;;;-1:-1:-1;;;;;3949:35:98;;;;;4013:5;:14;;;3994:6;4001:1;3994:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3994:34:98;;;;:9;;;;;;;;;;:34;4119:16;;;4133:1;4119:16;;;;;;;;4085:31;;4119:16;;4133:1;;4119:16;;;;;;;;;-1:-1:-1;4119:16:98;4085:50;;4165:12;:23;;;4145:14;4160:1;4145:17;;;;;;;;:::i;:::-;;;;;;:43;;;;;4218:12;:22;;;4198:14;4213:1;4198:17;;;;;;;;:::i;:::-;;;;;;;;;;:42;4320:23;;;4341:1;4320:23;;;;;;;;;4287:30;;4320:23;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4320:23:98;;;;;;;;;;;;;;;;4287:56;;4413:508;;;;;;;;4458:1;4413:508;;;;4488:1;4413:508;;;;4513:5;:14;;;-1:-1:-1;;;;;4413:508:98;;;;;4553:5;:16;;;4413:508;;;;4594:5;:15;;;4413:508;;;;4632:5;:13;;;4413:508;;;;;;4668:5;:13;;;4413:508;;;;4706:5;:15;;;4413:508;;;;4742:63;4771:5;4778:26;4742:28;:63::i;:::-;4413:508;;;;4835:5;:16;;;4413:508;;;;4893:3;4898:11;4876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4413:508;;;4401:6;4408:1;4401:9;;;;;;;;:::i;:::-;;;;;;:520;;;;4987:533;;;;;;;;5032:1;4987:533;;;;5062:1;4987:533;;;;5095:1;-1:-1:-1;;;;;4987:533:98;;;;;5123:12;:23;;;4987:533;;;;5171:12;:22;;;4987:533;;;;5216:12;:20;;;4987:533;;;;;;5259:12;:20;;;4987:533;;;;5304:12;:22;;;4987:533;;;;5347:69;5376:12;5390:25;5347:28;:69::i;:::-;4987:533;;;;5446:12;:23;;;4987:533;;;;5494:15;4987:533;;;4975:6;4982:1;4975:9;;;;;;;;:::i;:::-;;;;;;:545;;;;5574:45;:153;;;;;;;;5662:1;5635:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5635:29:98;;;;;;;;;;;;;;;-1:-1:-1;5574:153:98;;;;5693:1;5666:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5666:29:98;;;;;;;;;;;;;;;-1:-1:-1;5574:153:98;;;;5724:1;5697:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5697:29:98;;;;;;;;;;;;;;;-1:-1:-1;5574:153:98;;5796:6;:11;5787:21;;;;;-1:-1:-1;;;;;5796:11:98;;;5787:21;;;2654:74:105;5574:153:98;;-1:-1:-1;5787:8:98;;;;2627:18:105;;5787:21:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5822:28:98;;;;-1:-1:-1;5818:262:98;;5866:10;;:63;;;;;-1:-1:-1;;;;;5866:10:98;;;;:17;;:63;;5884:6;;5892:14;;5908:6;;5916:12;;5866:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5818:262;;;5960:32;;;;;18270:66:105;18258:79;;5960:32:98;;;18240:98:105;5960:15:98;;;;18213:18:105;;5960:32:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6006:10:98;;:63;;;;;-1:-1:-1;;;;;6006:10:98;;;;-1:-1:-1;6006:17:98;;-1:-1:-1;6006:63:98;;6024:6;;6032:14;;6048:6;;6056:12;;6006:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5818:262;2907:3179;;;;;;2711:3375;;;;;:::o;2493:990:44:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:44;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:44;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:44;;2493:990;-1:-1:-1;;;;2493:990:44:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;42308:2:105;42290:21;;;42347:2;42327:18;;;42320:30;42386:34;42381:2;42366:18;;42359:62;42457:7;42452:2;42437:18;;42430:35;42497:3;42482:19;;42106:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;:::-;;;;;;;;4349:6;:4;:6::i;3650:537:96:-;3854:15;;;;;-1:-1:-1;;;;;2672:55:105;;3854:15:96;;;2654:74:105;3854:8:96;;;;2627:18:105;;3854:15:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3879:37:96;;;;;3893:4;3879:37;;;36318:41:105;;;36375:18;;;36368:50;;;36434:18;;;36427:50;;;36493:18;;;36486:50;3879:13:96;;-1:-1:-1;3879:13:96;;-1:-1:-1;36290:19:105;;3879:37:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:5;-1:-1:-1;;;;;3931:33:96;;3952:4;3958:5;3931:33;;;;;;;:::i;:::-;;;;;;;;3974:13;;:65;;;;;-1:-1:-1;;;;;3974:13:96;;;;:32;;:65;;4007:4;;4013:5;;4020:12;;4034:4;;3974:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4058:13:96;;:26;;;;;-1:-1:-1;;;;;2672:55:105;;;4058:26:96;;;2654:74:105;4049:42:96;;-1:-1:-1;4058:13:96;;;;-1:-1:-1;4058:19:96;;2627:18:105;;4058:26:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4086:4;4049:8;:42::i;:::-;4110:13;;:40;;;;;-1:-1:-1;;;;;26603:55:105;;;4110:40:96;;;26585:74:105;4110:13:96;26675:18:105;;;26668:34;4101:79:96;;4110:13;;:21;;26558:18:105;;4110:40:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4163:4;4152:27;;;;;;;;;;;;:::i;6286:146::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6380:45:96;6400:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6554:464:96;;;;;;;;-1:-1:-1;6554:464:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6841:19;6554:464;;;;;;;;6930:23;6554:464;;;;;;;;;;;6438:587;4624:424;4746:15;;;;;-1:-1:-1;;;;;2672:55:105;;4746:15:96;;;2654:74:105;4746:8:96;;;;2627:18:105;;4746:15:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:8;4771:133;;;4799:37;;;;;4813:4;4799:37;;;36318:41:105;;;36375:18;;;36368:50;;;36434:18;;;36427:50;;;36493:18;;;36486:50;4799:13:96;;;;36290:19:105;;4799:37:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4879:5;-1:-1:-1;;;;;4855:38:96;;4886:6;4855:38;;;;;;:::i;:::-;;;;;;;;4771:133;4913:13;;:38;;;;;-1:-1:-1;;;;;4913:13:96;;;;:20;;:38;;4934:6;;4942:8;;4913:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4970:13:96;;5014:18;;4961:80;;-1:-1:-1;;;;;;4970:13:96;;;;-1:-1:-1;4970:26:96;;4997:5;;5014:18;;5025:6;;5014:18;;;:::i;:::-;;;;;;;;;;;;;5004:29;;;;;;4970:64;;;;;;;;;;;;;;;-1:-1:-1;;;;;26603:55:105;;;;26585:74;;26690:2;26675:18;;26668:34;26573:2;26558:18;;26411:297;4970:64:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5036:4;4961:8;:80::i;4252:304::-;4327:15;;;;;-1:-1:-1;;;;;2672:55:105;;4327:15:96;;;2654:74:105;4327:8:96;;;;2627:18:105;;4327:15:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4352:37:96;;;;;4366:4;4352:37;;;36318:41:105;;;36375:18;;;36368:50;;;36434:18;;;36427:50;;;36493:18;;;36486:50;4352:13:96;;-1:-1:-1;4352:13:96;;-1:-1:-1;36290:19:105;;4352:37:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4404:26:96;;-1:-1:-1;;;;;2672:55:105;;;2654:74;;4404:26:96;;;-1:-1:-1;4404:26:96;;-1:-1:-1;2642:2:105;2627:18;4404:26:96;;;;;;;4440:13;;:33;;;;;-1:-1:-1;;;;;2672:55:105;;;4440:33:96;;;2654:74:105;4440:13:96;;;;:26;;2627:18:105;;4440:33:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4500:13:96;;:31;;;;;-1:-1:-1;;;;;2672:55:105;;;4500:31:96;;;2654:74:105;4483:66:96;;-1:-1:-1;4500:13:96;;;;-1:-1:-1;4500:24:96;;2627:18:105;;4500:31:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4542:5;4483:8;:66::i;789:312:28:-;859:1;854:6;;:1;:6;;;850:245;;881:41;;;;;44910:2:105;44892:21;;;44949:2;44929:18;;;44922:30;44988:34;44983:2;44968:18;;44961:62;45059:4;45054:2;45039:18;;45032:32;45096:3;45081:19;;44708:398;881:41:28;;;;;;;;941:52;972:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:52;;;;;;:::i;:::-;;;;;;;;1012;1043:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1012:52;;;;;;:::i;5129:560:96:-;5355:15;;;;;-1:-1:-1;;;;;2672:55:105;;5355:15:96;;;2654:74:105;5355:8:96;;;;2627:18:105;;5355:15:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5384:8;5380:133;;;5408:37;;;;;5422:4;5408:37;;;36318:41:105;;;36375:18;;;36368:50;;;36434:18;;;36427:50;;;36493:18;;;36486:50;5408:13:96;;;;36290:19:105;;5408:37:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5488:5;-1:-1:-1;;;;;5464:38:96;;5495:6;5464:38;;;;;;:::i;:::-;;;;;;;;5380:133;5523:13;;:69;;;;;-1:-1:-1;;;;;5523:13:96;;;;:31;;:69;;5555:6;;5563:12;;5577:4;;5583:8;;5523:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5611:13:96;;5655:18;;5602:80;;-1:-1:-1;;;;;;5611:13:96;;;;-1:-1:-1;5611:26:96;;5638:5;;5655:18;;5666:6;;5655:18;;;:::i;5748:532::-;5855:17;5896:6;5885:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;5885:18:96;;;;;;;5875:29;;5885:18;5875:29;;;;5928:13;;:39;;;-1:-1:-1;;;;;26603:55:105;;;5928:39:96;;;26585:74:105;26675:18;;;26668:34;;;5875:29:96;;-1:-1:-1;5914:11:96;;5928:13;;;:21;;26558:18:105;;5928:39:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5977:15;;;;;-1:-1:-1;;;;;2672:55:105;;5977:15:96;;;2654:74:105;5914:53:96;;-1:-1:-1;5977:8:96;;;;2627:18:105;;5977:15:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6002:13:96;;:31;;;;;;;;6558:25:105;;;-1:-1:-1;;;;;6002:13:96;;;;-1:-1:-1;6002:20:96;;-1:-1:-1;6531:18:105;;6002:31:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6052:13:96;;:44;;;;;-1:-1:-1;;;;;26603:55:105;;;6052:44:96;;;26585:74:105;26675:18;;;26668:34;;;6043:61:96;;-1:-1:-1;6052:13:96;;;;-1:-1:-1;6052:26:96;;26558:18:105;;6052:44:96;26411:297:105;6043:61:96;6118:17;;6114:160;;6211:13;;:39;;;;;-1:-1:-1;;;;;26603:55:105;;;6211:39:96;;;26585:74:105;26675:18;;;26668:34;;;6202:61:96;;6211:13;;:21;;26558:18:105;;6211:39:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6260:1;6202:8;:61::i;3262:157:26:-;3322:9;3317:96;;3352:30;;;;;46897:2:105;46879:21;;;46936:2;46916:18;;;46909:30;46975:25;46970:2;46955:18;;46948:53;47033:2;47018:18;;46695:347;3352:30:26;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;1299:99:28:-;1376:15;1386:1;1389;1376:9;:15::i;3622:277:26:-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;47249:2:105;47231:21;;;47288:2;47268:18;;;47261:30;47327:34;47322:2;47307:18;;47300:62;47398:7;47393:2;47378:18;;47371:35;47438:3;47423:19;;47047:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;619:1105:95:-;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:95;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:95;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:95;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:95;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:95;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:95;;1223:9;;-1:-1:-1;1235:10:95;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:95;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:95;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:95;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:95;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:95;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:95;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:95;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:95;;;;;;;;;;;;-1:-1:-1;;1875:19:95;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:95;;;;;;;;;:11;;;;-1:-1:-1;1875:19:95;:11;;-1:-1:-1;;1875:11:95;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:95;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:102:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:102;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:102;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:102;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;220:180:101:-;313:7;383:6;372:18;;;;;;;;:::i;:::-;;;;-1:-1:-1;;372:18:101;;;;;;;;;362:29;;372:18;362:29;;;;349:43;;;51542:19:105;51577:12;349:43:101;;;;;;;;;;;;339:54;;;;;;332:61;;220:180;;;:::o;406:430::-;467:16;500:9;495:313;519:5;:12;515:1;:16;495:313;;;557:9;569:5;:1;573;569:5;:::i;:::-;557:17;;552:246;580:5;:12;576:1;:16;552:246;;;632:5;638:1;632:8;;;;;;;;:::i;:::-;;;;;;;621:5;627:1;621:8;;;;;;;;:::i;:::-;;;;;;;:19;617:167;;;664:12;679:5;685:1;679:8;;;;;;;;:::i;:::-;;;;;;;664:23;;720:5;726:1;720:8;;;;;;;;:::i;:::-;;;;;;;709:5;715:1;709:8;;;;;;;;:::i;:::-;;;;;;:19;;;;;761:4;750:5;756:1;750:8;;;;;;;;:::i;:::-;;;;;;:15;;;;;642:142;617:167;594:3;;;;:::i;:::-;;;;552:246;;;-1:-1:-1;533:3:101;;;;:::i;:::-;;;;495:313;;;-1:-1:-1;824:5:101;;406:430;-1:-1:-1;406:430:101:o;829:297:103:-;980:10;;;;972:25;;;;;;;;51774::105;;;;51815:18;;;51808:34;;;914:12:103;;939:7;;;;;;206:42;;972:7;;51747:18:105;;972:25:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:103;;-1:-1:-1;938:59:103;-1:-1:-1;1008:22:103;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:103;;;;;;52434:19:105;;;;52469:12;;;52462:28;;;;-1:-1:-1;;;52528:3:105;52524:16;;;;52542:66;52520:89;52506:12;;;52499:111;1068:25:103;;;;;;;;;52626:12:105;;;;1068:25:103;;;;;-1:-1:-1;;;829:297:103:o;3841:1483:104:-;3972:13;4081:18;4067:5;:10;;;:32;4063:91;;831:4;4115:28;4063:91;4238:5;:23;;;4234:80;;;925:4;4277:26;4234:80;4434:26;4408:5;:22;;;:52;4404:256;;1057:4;4476:42;4404:256;;;4565:26;4539:5;:22;;;:52;4535:125;;1120:4;4607:42;4535:125;4768:26;4743:5;:21;;;:51;4739:123;;1250:4;4810:41;4739:123;4968:26;4951:13;:43;;;;;;;;:::i;:::-;;4947:348;;1371:4;5010:38;4947:348;;;5086:26;5069:13;:43;;;;;;;;:::i;:::-;;5065:230;;1430:4;5128:38;5065:230;;;5204:26;5187:13;:43;;;;;;;;:::i;:::-;;5183:112;;1489:4;5246:38;3841:1483;;;;:::o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;52851:74:105;;;2677:17:26;52941:18:105;;;52934:34;;;;2712:4:26;52984:18:105;;;52977:34;2489:11:26;;1671:64;2586:43;;52824:18:105;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;15654:291::-;15729:14;15738:1;15741;15729:8;:14::i;:::-;15724:215;;15764:42;;;;;53224:2:105;53206:21;;;53263:2;53243:18;;;53236:30;53302:34;53297:2;53282:18;;53275:62;53373:5;53368:2;53353:18;;53346:33;53411:3;53396:19;;53022:399;15764:42:26;;;;;;;;15825:32;15855:1;15825:32;;;;;;:::i;:::-;;;;;;;;15876;15906:1;15876:32;;;;;;:::i;1332:965:98:-;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:98;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:98;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:98;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:98;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:98;;;1863:39;;;2654:74:105;1780:73:98;;-1:-1:-1;1863:27:98;;;;;2627:18:105;;1863:39:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:98;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:98;;;;-1:-1:-1;2012:36:98;;;:::i;:::-;-1:-1:-1;;;;;54614:15:105;;;54596:34;;54666:15;;54661:2;54646:18;;54639:43;54523:2;54508:18;2012:36:98;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:98;:49;;;;-1:-1:-1;;;;;1999:49:98;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:98;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;2654:74:105;2228:8:98;;;;2627:18:105;;2228:20:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:98;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:98;;;2258:32;;;2654:74:105;2258:19:98;;;;-1:-1:-1;2258:19:98;;-1:-1:-1;2627:18:105;;2258:32:98;2486:248:105;373:261:103;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:103;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:103;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;6558:25:105;;;489:33:103;-1:-1:-1;481:42:103;;206;;548:7;;6531:18:105;;548:11:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:103;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:103;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;20040:117:30:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;953:558:102:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:102;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:102;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:102:o;1297:495:103:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:103;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:103;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:103;;;;:::i;:::-;;;;1405:356;;15304:345:26;15431:8;;15419;;15401:4;;15419:20;;15415:228;;15460:6;15455:137;15476:1;:8;15472:1;:12;15455:137;;;15521:1;15523;15521:4;;;;;;;;:::i;:::-;;;;;;;;;15513:12;;;:1;15515;15513:4;;;;;;;;:::i;:::-;;;;;;;:12;15509:69;;15554:5;15549:10;;15509:69;15486:3;;;;:::i;:::-;;;;15455:137;;;;15415:228;;;-1:-1:-1;15627:5:26;15304:345;;;;:::o;15314:125:30:-;15378:12;15412:20;15427:4;15412:14;:20::i;20436:825::-;20600:38;;;-1:-1:-1;;;;;2672:55:105;;;20600:38:30;;;;2654:74:105;;;;20600:38:30;;;;;;;;;;2627:18:105;;;;20600:38:30;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:30;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:30;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;15033:242::-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:30;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;6558:25:105;;;15168:33:30;-1:-1:-1;15219:7:30;;;;6531:18:105;;15219:19:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:30;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;7700:156:35:-;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:35;;;;;-1:-1:-1;4573:12:35;7813:36;7806:43;7700:156;-1:-1:-1;;;7700:156:35:o;7862:143::-;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:35;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:35;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:35;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:35;;;;;;;;;-1:-1:-1;;;;;9604:15:35;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:35;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:35;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:35;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:35;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:35;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:35;-1:-1:-1;9922:38:35;;-1:-1:-1;9857:44:35;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;26603:55:105;;9995:18:35;;;26585:74:105;26675:18;;;26668:34;;;9915:45:35;;-1:-1:-1;9980:12:35;;-1:-1:-1;9995:7:35;;;;26558:18:105;;9995::35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;58562:2:105;10056:175:35;;;58544:21:105;58601:3;58581:18;;;58574:31;58641:34;58621:18;;;58614:62;58712:34;58692:18;;;58685:62;58784:34;58763:19;;;58756:63;58856:17;58835:19;;;58828:46;58891:19;;10056:175:35;58360:556:105;10056:175:35;10251:24;;;;;-1:-1:-1;;;;;52869:55:105;;10251:24:35;;;52851:74:105;52941:18;;;52934:34;;;52984:18;;;52977:34;;;10251:8:35;;;;52824:18:105;;10251:24:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:35;;;10285:19;;;;;;-1:-1:-1;10321:9:35;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:35;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;11471:393::-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:35;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:35;;11110:304;-1:-1:-1;;;;11110:304:35:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:35;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:35;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:35;:15;;-1:-1:-1;1568:34:35;;-1:-1:-1;1452:33:35;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:35;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:35;;;;1532:174;;;-1:-1:-1;;;;;1627:15:35;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:35;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:35;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:35;-1:-1:-1;1903:38:35;;-1:-1:-1;1838:44:35;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;2672:55:105;;1990:25:35;;;2654:74:105;1896:45:35;;-1:-1:-1;1963:22:35;;-1:-1:-1;1990:11:35;;;;2627:18:105;;1990:25:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:35;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:35;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;26603:55:105;;;;26585:74;;26690:2;26675:18;;26668:34;26573:2;26558:18;;26411:297;2077:22:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:35;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;26603:55:105;;;26585:74;;26675:18;;;26668:34;26558:18;2160:44:35;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;58562:2:105;2268:187:35;;;58544:21:105;58601:3;58581:18;;;58574:31;58641:34;58621:18;;;58614:62;58712:34;58692:18;;;58685:62;58784:34;58763:19;;;58756:63;58856:17;58835:19;;;58828:46;58891:19;;2268:187:35;58360:556:105;2268:187:35;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;60451:55:105;;;60433:74;;60555:66;60543:79;;;60523:18;;;60516:107;;;;60639:18;;;60632:34;60697:2;60682:18;;60675:34;60420:3;60405:19;2488:86:35;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:35;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:35;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:35;;;:88;;;;-1:-1:-1;;;;;2690:15:35;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:35;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:35;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:35;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:35;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:35;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;26603:55:105;;;;26585:74;;26690:2;26675:18;;26668:34;26573:2;26558:18;;26411:297;2894:22:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:35;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;26603:55:105;;;26585:74;;26675:18;;;26668:34;26558:18;2985:44:35;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:35;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;52869:55:105;;;3090:43:35;;;52851:74:105;52941:18;;;52934:34;3114:18:35;52984::105;;;52977:34;52824:18;;3090:43:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:35;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:35;;-1:-1:-1;3238:38:35;-1:-1:-1;3305:38:35;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;60451:55:105;;;60433:74;;60555:66;60543:79;;;60523:18;;;60516:107;;;;60639:18;;;60632:34;60697:2;60682:18;;60675:34;60420:3;60405:19;3519:86:35;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:35;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:35;-1:-1:-1;;;;;3737:15:35;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:35;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;52869:55:105;;;3834:29:35;;;52851:74:105;52941:18;;;52934:34;52984:18;;;52977:34;;;52824:18;;3834:29:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:35;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;52869:55:105;;;3926:29:35;;;52851:74:105;52941:18;;;52934:34;52984:18;;;52977:34;;;52824:18;;3926:29:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;60922:2:105;4000:74:35;;;60904:21:105;60941:18;;;60934:30;;;;61000:34;60980:18;;;60973:62;61071:34;61051:18;;;61044:62;61123:19;;4000:74:35;60720:428:105;2782:1303:35;-1:-1:-1;;;;;4116:15:35;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:35;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:35;;;;4095:162;;;;;;;61355:2:105;4095:162:35;;;61337:21:105;61394:2;61374:18;;;61367:30;61433:34;61413:18;;;61406:62;61504:17;61484:18;;;61477:45;61539:19;;4095:162:35;61153:411:105;4095:162:35;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:35;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:35;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:35;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:154:105:-;-1:-1:-1;;;;;93:5:105;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:184;225:77;222:1;215:88;322:4;319:1;312:15;346:4;343:1;336:15;362:255;434:2;428:9;476:6;464:19;;513:18;498:34;;534:22;;;495:62;492:88;;;560:18;;:::i;:::-;596:2;589:22;362:255;:::o;622:334::-;693:2;687:9;749:2;739:13;;-1:-1:-1;;735:86:105;723:99;;852:18;837:34;;873:22;;;834:62;831:88;;;899:18;;:::i;:::-;935:2;928:22;622:334;;-1:-1:-1;622:334:105:o;961:245::-;1009:4;1042:18;1034:6;1031:30;1028:56;;;1064:18;;:::i;:::-;-1:-1:-1;1121:2:105;1109:15;-1:-1:-1;;1105:88:105;1195:4;1101:99;;961:245::o;1211:462::-;1253:5;1306:3;1299:4;1291:6;1287:17;1283:27;1273:55;;1324:1;1321;1314:12;1273:55;1360:6;1347:20;1391:48;1407:31;1435:2;1407:31;:::i;:::-;1391:48;:::i;:::-;1464:2;1455:7;1448:19;1510:3;1503:4;1498:2;1490:6;1486:15;1482:26;1479:35;1476:55;;;1527:1;1524;1517:12;1476:55;1592:2;1585:4;1577:6;1573:17;1566:4;1557:7;1553:18;1540:55;1640:1;1615:16;;;1633:4;1611:27;1604:38;;;;1619:7;1211:462;-1:-1:-1;;;1211:462:105:o;1678:665::-;1773:6;1781;1789;1797;1850:3;1838:9;1829:7;1825:23;1821:33;1818:53;;;1867:1;1864;1857:12;1818:53;1906:9;1893:23;1925:31;1950:5;1925:31;:::i;:::-;1975:5;-1:-1:-1;2032:2:105;2017:18;;2004:32;2045:33;2004:32;2045:33;:::i;:::-;2097:7;-1:-1:-1;2151:2:105;2136:18;;2123:32;;-1:-1:-1;2206:2:105;2191:18;;2178:32;2233:18;2222:30;;2219:50;;;2265:1;2262;2255:12;2219:50;2288:49;2329:7;2320:6;2309:9;2305:22;2288:49;:::i;:::-;2278:59;;;1678:665;;;;;;;:::o;2985:180::-;3044:6;3097:2;3085:9;3076:7;3072:23;3068:32;3065:52;;;3113:1;3110;3103:12;3065:52;-1:-1:-1;3136:23:105;;2985:180;-1:-1:-1;2985:180:105:o;3170:250::-;3255:1;3265:113;3279:6;3276:1;3273:13;3265:113;;;3355:11;;;3349:18;3336:11;;;3329:39;3301:2;3294:10;3265:113;;;-1:-1:-1;;3412:1:105;3394:16;;3387:27;3170:250::o;3425:329::-;3466:3;3504:5;3498:12;3531:6;3526:3;3519:19;3547:76;3616:6;3609:4;3604:3;3600:14;3593:4;3586:5;3582:16;3547:76;:::i;:::-;3668:2;3656:15;-1:-1:-1;;3652:88:105;3643:98;;;;3743:4;3639:109;;3425:329;-1:-1:-1;;3425:329:105:o;3759:435::-;-1:-1:-1;;;;;3993:6:105;3989:55;3978:9;3971:74;4081:6;4076:2;4065:9;4061:18;4054:34;4124:2;4119;4108:9;4104:18;4097:30;3952:4;4144:44;4184:2;4173:9;4169:18;4161:6;4144:44;:::i;4199:484::-;4252:3;4290:5;4284:12;4317:6;4312:3;4305:19;4343:4;4372:2;4367:3;4363:12;4356:19;;4409:2;4402:5;4398:14;4430:1;4440:218;4454:6;4451:1;4448:13;4440:218;;;4519:13;;-1:-1:-1;;;;;4515:62:105;4503:75;;4598:12;;;;4633:15;;;;4476:1;4469:9;4440:218;;;-1:-1:-1;4674:3:105;;4199:484;-1:-1:-1;;;;;4199:484:105:o;4688:261::-;4867:2;4856:9;4849:21;4830:4;4887:56;4939:2;4928:9;4924:18;4916:6;4887:56;:::i;5204:183::-;5264:4;5297:18;5289:6;5286:30;5283:56;;;5319:18;;:::i;:::-;-1:-1:-1;5364:1:105;5360:14;5376:4;5356:25;;5204:183::o;5392:662::-;5446:5;5499:3;5492:4;5484:6;5480:17;5476:27;5466:55;;5517:1;5514;5507:12;5466:55;5553:6;5540:20;5579:4;5603:60;5619:43;5659:2;5619:43;:::i;5603:60::-;5697:15;;;5783:1;5779:10;;;;5767:23;;5763:32;;;5728:12;;;;5807:15;;;5804:35;;;5835:1;5832;5825:12;5804:35;5871:2;5863:6;5859:15;5883:142;5899:6;5894:3;5891:15;5883:142;;;5965:17;;5953:30;;6003:12;;;;5916;;5883:142;;;-1:-1:-1;6043:5:105;5392:662;-1:-1:-1;;;;;;5392:662:105:o;6059:348::-;6143:6;6196:2;6184:9;6175:7;6171:23;6167:32;6164:52;;;6212:1;6209;6202:12;6164:52;6252:9;6239:23;6285:18;6277:6;6274:30;6271:50;;;6317:1;6314;6307:12;6271:50;6340:61;6393:7;6384:6;6373:9;6369:22;6340:61;:::i;:::-;6330:71;6059:348;-1:-1:-1;;;;6059:348:105:o;6594:982::-;6732:6;6740;6748;6756;6764;6772;6825:3;6813:9;6804:7;6800:23;6796:33;6793:53;;;6842:1;6839;6832:12;6793:53;6881:9;6868:23;6900:31;6925:5;6900:31;:::i;:::-;6950:5;-1:-1:-1;7006:2:105;6991:18;;6978:32;7029:18;7059:14;;;7056:34;;;7086:1;7083;7076:12;7056:34;7109:61;7162:7;7153:6;7142:9;7138:22;7109:61;:::i;:::-;7099:71;;7217:2;7206:9;7202:18;7189:32;7179:42;;7273:2;7262:9;7258:18;7245:32;7230:47;;7286:33;7311:7;7286:33;:::i;:::-;7338:7;;-1:-1:-1;7392:3:105;7377:19;;7364:33;;-1:-1:-1;7450:3:105;7435:19;;7422:33;;7467:16;;;7464:36;;;7496:1;7493;7486:12;7464:36;;7519:51;7562:7;7551:8;7540:9;7536:24;7519:51;:::i;:::-;7509:61;;;6594:982;;;;;;;;:::o;7581:315::-;7649:6;7657;7710:2;7698:9;7689:7;7685:23;7681:32;7678:52;;;7726:1;7723;7716:12;7678:52;7765:9;7752:23;7784:31;7809:5;7784:31;:::i;:::-;7834:5;7886:2;7871:18;;;;7858:32;;-1:-1:-1;;;7581:315:105:o;8163:484::-;8265:6;8273;8281;8334:2;8322:9;8313:7;8309:23;8305:32;8302:52;;;8350:1;8347;8340:12;8302:52;8386:9;8373:23;8363:33;;8447:2;8436:9;8432:18;8419:32;8474:18;8466:6;8463:30;8460:50;;;8506:1;8503;8496:12;8460:50;8529:61;8582:7;8573:6;8562:9;8558:22;8529:61;:::i;:::-;8519:71;;;8637:2;8626:9;8622:18;8609:32;8599:42;;8163:484;;;;;:::o;8940:1697::-;9144:4;9173:2;9213;9202:9;9198:18;9243:2;9232:9;9225:21;9266:6;9301;9295:13;9332:6;9324;9317:22;9358:2;9348:12;;9391:2;9380:9;9376:18;9369:25;;9453:2;9443:6;9440:1;9436:14;9425:9;9421:30;9417:39;9491:2;9483:6;9479:15;9512:1;9533;9543:1065;9559:6;9554:3;9551:15;9543:1065;;;9628:22;;;9652:66;9624:95;9612:108;;9743:13;;9830:9;;-1:-1:-1;;;;;9826:58:105;9811:74;;9924:11;;9918:18;9956:15;;;9949:27;;;10037:19;;9783:15;;;10069:24;;;10159:21;;;;10204:1;;10127:2;10115:15;;;10218:282;10234:8;10229:3;10226:17;10218:282;;;10315:15;;10332:66;10311:88;10297:103;;10469:17;;;;10262:1;10253:11;;;;;10426:14;;;;10218:282;;;-1:-1:-1;10586:12:105;;;;10523:5;-1:-1:-1;;;10551:15:105;;;;9585:1;9576:11;9543:1065;;;-1:-1:-1;10625:6:105;;8940:1697;-1:-1:-1;;;;;;;;;8940:1697:105:o;10642:734::-;10746:6;10754;10762;10770;10778;10831:3;10819:9;10810:7;10806:23;10802:33;10799:53;;;10848:1;10845;10838:12;10799:53;10887:9;10874:23;10906:31;10931:5;10906:31;:::i;:::-;10956:5;-1:-1:-1;11013:2:105;10998:18;;10985:32;11026:33;10985:32;11026:33;:::i;:::-;11078:7;-1:-1:-1;11132:2:105;11117:18;;11104:32;;-1:-1:-1;11187:2:105;11172:18;;11159:32;11214:18;11203:30;;11200:50;;;11246:1;11243;11236:12;11200:50;11269:49;11310:7;11301:6;11290:9;11286:22;11269:49;:::i;:::-;10642:734;;;;-1:-1:-1;10642:734:105;;11365:3;11350:19;11337:33;;10642:734;-1:-1:-1;;;10642:734:105:o;11612:861::-;11774:4;11803:2;11843;11832:9;11828:18;11873:2;11862:9;11855:21;11896:6;11931;11925:13;11962:6;11954;11947:22;12000:2;11989:9;11985:18;11978:25;;12062:2;12052:6;12049:1;12045:14;12034:9;12030:30;12026:39;12012:53;;12100:2;12092:6;12088:15;12121:1;12131:313;12145:6;12142:1;12139:13;12131:313;;;12234:66;12222:9;12214:6;12210:22;12206:95;12201:3;12194:108;12325:39;12357:6;12348;12342:13;12325:39;:::i;:::-;12315:49;-1:-1:-1;12422:12:105;;;;12387:15;;;;12167:1;12160:9;12131:313;;;-1:-1:-1;12461:6:105;;11612:861;-1:-1:-1;;;;;;;11612:861:105:o;12744:383::-;12821:6;12829;12837;12890:2;12878:9;12869:7;12865:23;12861:32;12858:52;;;12906:1;12903;12896:12;12858:52;12945:9;12932:23;12964:31;12989:5;12964:31;:::i;:::-;13014:5;13066:2;13051:18;;13038:32;;-1:-1:-1;13117:2:105;13102:18;;;13089:32;;12744:383;-1:-1:-1;;;12744:383:105:o;13132:416::-;13225:6;13233;13286:2;13274:9;13265:7;13261:23;13257:32;13254:52;;;13302:1;13299;13292:12;13254:52;13342:9;13329:23;13375:18;13367:6;13364:30;13361:50;;;13407:1;13404;13397:12;13361:50;13430:61;13483:7;13474:6;13463:9;13459:22;13430:61;:::i;:::-;13420:71;13538:2;13523:18;;;;13510:32;;-1:-1:-1;;;;13132:416:105:o;13553:435::-;13606:3;13644:5;13638:12;13671:6;13666:3;13659:19;13697:4;13726:2;13721:3;13717:12;13710:19;;13763:2;13756:5;13752:14;13784:1;13794:169;13808:6;13805:1;13802:13;13794:169;;;13869:13;;13857:26;;13903:12;;;;13938:15;;;;13830:1;13823:9;13794:169;;13993:261;14172:2;14161:9;14154:21;14135:4;14192:56;14244:2;14233:9;14229:18;14221:6;14192:56;:::i;15152:248::-;15220:6;15228;15281:2;15269:9;15260:7;15256:23;15252:32;15249:52;;;15297:1;15294;15287:12;15249:52;-1:-1:-1;;15320:23:105;;;15390:2;15375:18;;;15362:32;;-1:-1:-1;15152:248:105:o;15906:370::-;-1:-1:-1;;;;;16011:5:105;16005:12;16001:61;15996:3;15989:74;16112:4;16105:5;16101:16;16095:23;16088:4;16083:3;16079:14;16072:47;15971:3;16165:4;16158:5;16154:16;16148:23;16203:4;16196;16191:3;16187:14;16180:28;16224:46;16264:4;16259:3;16255:14;16241:12;16224:46;:::i;16281:425::-;-1:-1:-1;;;;;16524:6:105;16520:55;16509:9;16502:74;16612:2;16607;16596:9;16592:18;16585:30;16483:4;16632:68;16696:2;16685:9;16681:18;16673:6;16632:68;:::i;16711:164::-;16787:13;;16836;;16829:21;16819:32;;16809:60;;16865:1;16862;16855:12;16880:712;16978:6;17031:3;17019:9;17010:7;17006:23;17002:33;16999:53;;;17048:1;17045;17038:12;16999:53;17081:2;17075:9;17123:3;17115:6;17111:16;17193:6;17181:10;17178:22;17157:18;17145:10;17142:34;17139:62;17136:88;;;17204:18;;:::i;:::-;17240:2;17233:22;17279:16;;17264:32;;17329:46;17371:2;17356:18;;17329:46;:::i;:::-;17324:2;17316:6;17312:15;17305:71;17430:2;17419:9;17415:18;17409:25;17404:2;17396:6;17392:15;17385:50;17478:2;17467:9;17463:18;17457:25;17491:31;17516:5;17491:31;:::i;:::-;17550:2;17538:15;;17531:30;17542:6;16880:712;-1:-1:-1;;;16880:712:105:o;17597:305::-;17808:2;17797:9;17790:21;17771:4;17828:68;17892:2;17881:9;17877:18;17869:6;17828:68;:::i;17907:184::-;17977:6;18030:2;18018:9;18009:7;18005:23;18001:32;17998:52;;;18046:1;18043;18036:12;17998:52;-1:-1:-1;18069:16:105;;17907:184;-1:-1:-1;17907:184:105:o;18349:791::-;-1:-1:-1;;;;;18716:6:105;18712:55;18701:9;18694:74;18804:3;18799:2;18788:9;18784:18;18777:31;18675:4;18831:69;18895:3;18884:9;18880:19;18872:6;18831:69;:::i;:::-;18948:9;18940:6;18936:22;18931:2;18920:9;18916:18;18909:50;18982:32;19007:6;18999;18982:32;:::i;:::-;18968:46;;19062:9;19054:6;19050:22;19045:2;19034:9;19030:18;19023:50;19090:44;19127:6;19119;19090:44;:::i;19145:146::-;19232:13;;19254:31;19232:13;19254:31;:::i;19296:167::-;19374:13;;19427:10;19416:22;;19406:33;;19396:61;;19453:1;19450;19443:12;19468:441;19521:5;19574:3;19567:4;19559:6;19555:17;19551:27;19541:55;;19592:1;19589;19582:12;19541:55;19621:6;19615:13;19652:48;19668:31;19696:2;19668:31;:::i;19652:48::-;19725:2;19716:7;19709:19;19771:3;19764:4;19759:2;19751:6;19747:15;19743:26;19740:35;19737:55;;;19788:1;19785;19778:12;19737:55;19801:77;19875:2;19868:4;19859:7;19855:18;19848:4;19840:6;19836:17;19801:77;:::i;19914:1452::-;20024:6;20032;20076:9;20067:7;20063:23;20106:3;20102:2;20098:12;20095:32;;;20123:1;20120;20113:12;20095:32;20146:6;20172:2;20168;20164:11;20161:31;;;20188:1;20185;20178:12;20161:31;20214:22;;:::i;:::-;20201:35;;20259:48;20297:9;20259:48;:::i;:::-;20252:5;20245:63;20340:57;20393:2;20382:9;20378:18;20340:57;:::i;:::-;20335:2;20328:5;20324:14;20317:81;20430:57;20483:2;20472:9;20468:18;20430:57;:::i;:::-;20425:2;20418:5;20414:14;20407:81;20541:2;20530:9;20526:18;20520:25;20515:2;20508:5;20504:14;20497:49;20600:3;20589:9;20585:19;20579:26;20573:3;20566:5;20562:15;20555:51;20639:49;20683:3;20672:9;20668:19;20639:49;:::i;:::-;20633:3;20626:5;20622:15;20615:74;20743:3;20732:9;20728:19;20722:26;20716:3;20709:5;20705:15;20698:51;20803:3;20792:9;20788:19;20782:26;20776:3;20769:5;20765:15;20758:51;20828:3;20884:2;20873:9;20869:18;20863:25;20858:2;20851:5;20847:14;20840:49;;20908:3;20943:46;20985:2;20974:9;20970:18;20943:46;:::i;:::-;20927:14;;;20920:70;21009:3;21050:18;;;21044:25;21028:14;;;21021:49;21089:3;21130:18;;;21124:25;21108:14;;;21101:49;21203:18;;21197:25;20931:5;;-1:-1:-1;21245:18:105;21234:30;;21231:50;;;21277:1;21274;21267:12;21231:50;21300:60;21352:7;21343:6;21332:9;21328:22;21300:60;:::i;:::-;21290:70;;;19914:1452;;;;;:::o;21371:437::-;21450:1;21446:12;;;;21493;;;21514:61;;21568:4;21560:6;21556:17;21546:27;;21514:61;21621:2;21613:6;21610:14;21590:18;21587:38;21584:218;;21658:77;21655:1;21648:88;21759:4;21756:1;21749:15;21787:4;21784:1;21777:15;21584:218;;21371:437;;;:::o;22002:202::-;22069:6;22122:2;22110:9;22101:7;22097:23;22093:32;22090:52;;;22138:1;22135;22128:12;22090:52;22161:37;22188:9;22161:37;:::i;22613:184::-;22665:77;22662:1;22655:88;22762:4;22759:1;22752:15;22786:4;22783:1;22776:15;22901:1039;22984:12;;-1:-1:-1;;;;;2420:54:105;2408:67;;23048:4;23041:5;23037:16;23031:23;23063:54;23111:4;23106:3;23102:14;23088:12;-1:-1:-1;;;;;2420:54:105;2408:67;;2348:133;23063:54;;23165:4;23158:5;23154:16;23148:23;23180:56;23230:4;23225:3;23221:14;23205;-1:-1:-1;;;;;2420:54:105;2408:67;;2348:133;23180:56;;23285:4;23278:5;23274:16;23268:23;23261:4;23256:3;23252:14;23245:47;23341:4;23334:5;23330:16;23324:23;23317:4;23312:3;23308:14;23301:47;23396:4;23389:5;23385:16;23379:23;23411:49;23454:4;23449:3;23445:14;23429;22878:10;22867:22;22855:35;;22802:94;23411:49;;23509:4;23502:5;23498:16;23492:23;23485:4;23480:3;23476:14;23469:47;23565:4;23558:5;23554:16;23548:23;23541:4;23536:3;23532:14;23525:47;23591:6;23644:2;23637:5;23633:14;23627:21;23622:2;23617:3;23613:12;23606:43;;23668:6;23722:2;23715:5;23711:14;23705:21;23735:45;23776:2;23771:3;23767:12;23751:14;8722:13;8715:21;8703:34;;8652:91;23735:45;-1:-1:-1;;23799:6:105;23841:14;;;23835:21;23821:12;;;23814:43;23876:6;23918:14;;;23912:21;23898:12;;23891:43;22901:1039::o;23945:238::-;24123:3;24108:19;;24136:41;24112:9;24159:6;24136:41;:::i;24188:844::-;24381:2;24370:9;24363:21;24344:4;24419:6;24413:13;24462:4;24457:2;24446:9;24442:18;24435:32;24490:63;24548:3;24537:9;24533:19;24519:12;24490:63;:::i;:::-;24476:77;;24602:2;24594:6;24590:15;24584:22;-1:-1:-1;;24755:2:105;24743:9;24735:6;24731:22;24727:31;24722:2;24711:9;24707:18;24700:59;24782:64;24839:6;24823:14;24782:64;:::i;:::-;24768:78;;24895:2;24887:6;24883:15;24877:22;24855:44;;24965:2;24953:9;24945:6;24941:22;24937:31;24930:4;24919:9;24915:20;24908:61;;24986:40;25019:6;25003:14;24986:40;:::i;25037:838::-;25355:4;-1:-1:-1;;;;;25465:2:105;25457:6;25453:15;25442:9;25435:34;25517:2;25509:6;25505:15;25500:2;25489:9;25485:18;25478:43;;25557:6;25552:2;25541:9;25537:18;25530:34;25600:6;25595:2;25584:9;25580:18;25573:34;25644:6;25638:3;25627:9;25623:19;25616:35;25688:3;25682;25671:9;25667:19;25660:32;25715:45;25755:3;25744:9;25740:19;25732:6;25715:45;:::i;:::-;25809:9;25801:6;25797:22;25791:3;25780:9;25776:19;25769:51;25837:32;25862:6;25854;25837:32;:::i;:::-;25829:40;25037:838;-1:-1:-1;;;;;;;;;;25037:838:105:o;25880:336::-;25949:6;26002:2;25990:9;25981:7;25977:23;25973:32;25970:52;;;26018:1;26015;26008:12;25970:52;26050:9;26044:16;26100:66;26093:5;26089:78;26082:5;26079:89;26069:117;;26182:1;26179;26172:12;26713:287;26842:3;26880:6;26874:13;26896:66;26955:6;26950:3;26943:4;26935:6;26931:17;26896:66;:::i;:::-;26978:16;;;;;26713:287;-1:-1:-1;;26713:287:105:o;27005:968::-;27373:4;27402:3;-1:-1:-1;;;;;27505:2:105;27497:6;27493:15;27482:9;27475:34;27557:2;27549:6;27545:15;27540:2;27529:9;27525:18;27518:43;;27597:6;27592:2;27581:9;27577:18;27570:34;27640:6;27635:2;27624:9;27620:18;27613:34;27684:6;27678:3;27667:9;27663:19;27656:35;27728:2;27722:3;27711:9;27707:19;27700:31;27754:44;27794:2;27783:9;27779:18;27771:6;27754:44;:::i;:::-;27740:58;;27847:9;27839:6;27835:22;27829:3;27818:9;27814:19;27807:51;27875:32;27900:6;27892;27875:32;:::i;:::-;27867:40;;;27916:51;27962:3;27951:9;27947:19;27939:6;27916:51;:::i;:::-;27005:968;;;;;;;;;;;:::o;27978:219::-;28127:2;28116:9;28109:21;28090:4;28147:44;28187:2;28176:9;28172:18;28164:6;28147:44;:::i;28424:288::-;28599:6;28588:9;28581:25;28642:2;28637;28626:9;28622:18;28615:30;28562:4;28662:44;28702:2;28691:9;28687:18;28679:6;28662:44;:::i;29041:283::-;29143:6;29196:2;29184:9;29175:7;29171:23;29167:32;29164:52;;;29212:1;29209;29202:12;29164:52;29244:9;29238:16;29263:31;29288:5;29263:31;:::i;29923:430::-;30120:66;30112:6;30108:79;30103:3;30096:92;30078:3;30217:6;30211:13;30233:74;30300:6;30296:1;30291:3;30287:11;30280:4;30272:6;30268:17;30233:74;:::i;:::-;30327:16;;;;30345:1;30323:24;;29923:430;-1:-1:-1;;;29923:430:105:o;30358:184::-;30410:77;30407:1;30400:88;30507:4;30504:1;30497:15;30531:4;30528:1;30521:15;30547:125;30612:9;;;30633:10;;;30630:36;;;30646:18;;:::i;30677:386::-;30910:2;30899:9;30892:21;30873:4;30930:68;30994:2;30983:9;30979:18;30971:6;30930:68;:::i;:::-;30922:76;;31048:6;31041:14;31034:22;31029:2;31018:9;31014:18;31007:50;30677:386;;;;;:::o;31068:445::-;31318:2;31307:9;31300:21;31357:1;31352:2;31341:9;31337:18;31330:29;31395:7;31390:2;31379:9;31375:18;31368:35;31441:3;31434:4;31423:9;31419:20;31412:33;31281:4;31462:45;31502:3;31491:9;31487:19;31479:6;31462:45;:::i;32074:980::-;32292:13;;-1:-1:-1;;;;;2420:54:105;2408:67;;32254:3;32239:19;;32364:4;32356:6;32352:17;32346:24;32379:60;32433:4;32422:9;32418:20;32404:12;-1:-1:-1;;;;;2420:54:105;2408:67;;2348:133;32379:60;;32488:4;32480:6;32476:17;32470:24;32503:62;32559:4;32548:9;32544:20;32528:14;-1:-1:-1;;;;;2420:54:105;2408:67;;2348:133;32503:62;;32621:4;32613:6;32609:17;32603:24;32596:4;32585:9;32581:20;32574:54;32684:4;32676:6;32672:17;32666:24;32659:4;32648:9;32644:20;32637:54;32747:4;32739:6;32735:17;32729:24;32722:4;32711:9;32707:20;32700:54;32810:4;32802:6;32798:17;32792:24;32785:4;32774:9;32770:20;32763:54;32873:4;32865:6;32861:17;32855:24;32848:4;32837:9;32833:20;32826:54;32899:6;32959:2;32951:6;32947:15;32941:22;32936:2;32925:9;32921:18;32914:50;;32983:6;33043:2;33035:6;33031:15;33025:22;33020:2;33009:9;33005:18;32998:50;;32074:980;;;;:::o;33059:195::-;33098:3;33129:66;33122:5;33119:77;33116:103;;33199:18;;:::i;:::-;-1:-1:-1;33246:1:105;33235:13;;33059:195::o;33259:168::-;33332:9;;;33363;;33380:15;;;33374:22;;33360:37;33350:71;;33401:18;;:::i;33859:544::-;33960:2;33955:3;33952:11;33949:448;;;33996:1;34021:5;34017:2;34010:17;34066:4;34062:2;34052:19;34136:2;34124:10;34120:19;34117:1;34113:27;34107:4;34103:38;34172:4;34160:10;34157:20;34154:47;;;-1:-1:-1;34195:4:105;34154:47;34250:2;34245:3;34241:12;34238:1;34234:20;34228:4;34224:31;34214:41;;34305:82;34323:2;34316:5;34313:13;34305:82;;;34368:17;;;34349:1;34338:13;34305:82;;34639:1467;34763:3;34757:10;34790:18;34782:6;34779:30;34776:56;;;34812:18;;:::i;:::-;34841:96;34930:6;34890:38;34922:4;34916:11;34890:38;:::i;:::-;34884:4;34841:96;:::i;:::-;34992:4;;35056:2;35045:14;;35073:1;35068:781;;;;35893:1;35910:6;35907:89;;;-1:-1:-1;35962:19:105;;;35956:26;35907:89;34545:66;34536:1;34532:11;;;34528:84;34524:89;34514:100;34620:1;34616:11;;;34511:117;36009:81;;35038:1062;;35068:781;33806:1;33799:14;;;33843:4;33830:18;;-1:-1:-1;;35104:79:105;;;35280:236;35294:7;35291:1;35288:14;35280:236;;;35383:19;;;35377:26;35362:42;;35475:27;;;;35443:1;35431:14;;;;35310:19;;35280:236;;;35284:3;35544:6;35535:7;35532:19;35529:261;;;35605:19;;;35599:26;35706:66;35688:1;35684:14;;;35700:3;35680:24;35676:97;35672:102;35657:118;35642:134;;35529:261;-1:-1:-1;;;;;35836:1:105;35820:14;;;35816:22;35803:36;;-1:-1:-1;34639:1467:105:o;36547:248::-;36631:5;36625:12;36620:3;36613:25;36595:3;36684:4;36677:5;36673:16;36667:23;36722:4;36715;36710:3;36706:14;36699:28;36743:46;36783:4;36778:3;36774:14;36760:12;36743:46;:::i;36800:325::-;37005:6;36994:9;36987:25;37048:2;37043;37032:9;37028:18;37021:30;36968:4;37068:51;37115:2;37104:9;37100:18;37092:6;37068:51;:::i;37130:443::-;37338:66;37329:6;37325:2;37321:15;37317:88;37312:3;37305:101;37287:3;37435:6;37429:13;37451:75;37519:6;37514:2;37509:3;37505:12;37498:4;37490:6;37486:17;37451:75;:::i;:::-;37546:16;;;;37564:2;37542:25;;37130:443;-1:-1:-1;;;37130:443:105:o;37578:1493::-;37641:3;37672;37713:2;37747;37740:5;37736:14;37773:5;37796:1;37817;37827:1218;37843:4;37838:3;37835:13;37827:1218;;;37906:16;;;37894:29;;37946:13;;38016:9;;38038:20;;;38081:4;38210:11;;;;38107:13;;;;38016:9;38165:1;38161:14;;;38151:25;;38147:34;;38245:1;38259:679;38275:6;38270:3;38267:15;38259:679;;;38354:17;;;-1:-1:-1;;38350:90:105;38336:105;;38468:15;;38519:9;;-1:-1:-1;;;;;38515:58:105;38500:74;;38621:11;;;38615:18;38598:15;;;38591:43;38661:4;38708:11;;;38702:18;38744:15;;;38737:27;;;38791:47;38822:15;;;38702:18;38791:47;:::i;:::-;38867:17;;;;38910:14;;;;38781:57;-1:-1:-1;;38301:1:105;38292:11;38259:679;;;-1:-1:-1;39023:12:105;;;;38959:6;-1:-1:-1;38988:15:105;;;;;-1:-1:-1;;;37867:1:105;37858:11;37827:1218;;;-1:-1:-1;39061:4:105;;37578:1493;-1:-1:-1;;;;;;;37578:1493:105:o;39076:3025::-;39630:3;39683:21;;;39753:13;;39656:18;;;39775:22;;;39601:4;;39630:3;39816;;39835:18;;;;39872:4;39899:15;;;39601:4;39942:218;39956:6;39953:1;39950:13;39942:218;;;40021:13;;-1:-1:-1;;;;;40017:62:105;40005:75;;40100:12;;;;40135:15;;;;39978:1;39971:9;39942:218;;;39946:3;;40205:9;40200:3;40196:19;40191:2;40180:9;40176:18;40169:47;40239:41;40276:3;40268:6;40239:41;:::i;:::-;40225:55;;40299:2;40289:12;;40349:9;40341:6;40337:22;40332:2;40321:9;40317:18;40310:50;40382:6;40419;40413:13;40450:8;40442:6;40435:24;40489:2;40481:6;40477:15;40468:24;;40550:2;40538:8;40535:1;40531:16;40523:6;40519:29;40515:38;40590:2;40582:6;40578:15;40613:1;40623:1340;40639:8;40634:3;40631:17;40623:1340;;;-1:-1:-1;;40724:6:105;40716;40712:19;40708:92;40701:5;40694:107;40830:8;40824:15;40862:6;40902:2;40896:9;40888:6;40881:25;40957:2;40953;40949:11;40943:18;40938:2;40930:6;40926:15;40919:43;41009:2;41005;41001:11;40995:18;41026:55;41077:2;41069:6;41065:15;41051:12;-1:-1:-1;;;;;2420:54:105;2408:67;;2348:133;41026:55;-1:-1:-1;41104:4:105;41151:11;;;41145:18;41128:15;;;41121:43;41207:11;;;41201:18;41184:15;;;41177:43;41261:11;;;41255:18;22878:10;22867:22;41320:15;;;22855:35;41359:4;41406:11;;;41400:18;41383:15;;;41376:43;41442:4;41489:11;;;41483:18;41466:15;;;41459:43;41526:6;41576:12;;;41570:19;41552:16;;;41545:45;41614:6;41664:12;;;41658:19;41640:16;;;41633:45;41702:6;41749:12;;;41743:19;41782:16;;;41775:28;;;41826:49;41859:15;;;41743:19;41826:49;:::i;:::-;41939:14;;;;41816:59;-1:-1:-1;;;41900:17:105;;;;40667:1;40658:11;40623:1340;;;40627:3;;42013:9;42005:6;42001:22;41994:4;41983:9;41979:20;41972:52;42041:54;42088:6;42080;42041:54;:::i;:::-;42033:62;39076:3025;-1:-1:-1;;;;;;;;;;;;;;39076:3025:105:o;42676:348::-;42906:2;42895:9;42888:21;42869:4;42926:49;42971:2;42960:9;42956:18;42589:2;42577:15;;42624:12;42617:4;42608:14;;42601:36;42662:2;42653:12;;42512:159;42926:49;42918:57;;43011:6;43006:2;42995:9;42991:18;42984:34;42676:348;;;;:::o;43193:::-;43423:2;43412:9;43405:21;43386:4;43443:49;43488:2;43477:9;43473:18;43106:2;43094:15;;43141:12;43134:4;43125:14;;43118:36;43179:2;43170:12;;43029:159;43546:630;43848:6;43837:9;43830:25;43891:3;43886:2;43875:9;43871:18;43864:31;43811:4;43918:52;43965:3;43954:9;43950:19;43942:6;43918:52;:::i;:::-;-1:-1:-1;;;;;44010:6:105;44006:55;44001:2;43990:9;43986:18;43979:83;44110:9;44102:6;44098:22;44093:2;44082:9;44078:18;44071:50;44138:32;44163:6;44155;44138:32;:::i;45111:439::-;45361:2;45350:9;45343:21;45324:4;45387:49;45432:2;45421:9;45417:18;42589:2;42577:15;;42624:12;42617:4;42608:14;;42601:36;42662:2;42653:12;;42512:159;45387:49;45484:9;45476:6;45472:22;45467:2;45456:9;45452:18;45445:50;45512:32;45537:6;45529;45512:32;:::i;45555:439::-;45805:2;45794:9;45787:21;45768:4;45831:49;45876:2;45865:9;45861:18;43106:2;43094:15;;43141:12;43134:4;43125:14;;43118:36;43179:2;43170:12;;43029:159;45999:691;46329:3;46318:9;46311:22;46292:4;46356:69;46420:3;46409:9;46405:19;46397:6;46356:69;:::i;:::-;-1:-1:-1;;;;;46465:6:105;46461:55;46456:2;46445:9;46441:18;46434:83;46565:9;46557:6;46553:22;46548:2;46537:9;46533:18;46526:50;46593:32;46618:6;46610;46593:32;:::i;:::-;46585:40;;;46675:6;46668:14;46661:22;46656:2;46645:9;46641:18;46634:50;45999:691;;;;;;;:::o;47453:397::-;47683:2;47672:9;47665:21;47646:4;47703:49;47748:2;47737:9;47733:18;42589:2;42577:15;;42624:12;42617:4;42608:14;;42601:36;42662:2;42653:12;;42512:159;47703:49;47695:57;;-1:-1:-1;;;;;47792:6:105;47788:55;47783:2;47772:9;47768:18;47761:83;47453:397;;;;:::o;47855:::-;48085:2;48074:9;48067:21;48048:4;48105:49;48150:2;48139:9;48135:18;43106:2;43094:15;;43141:12;43134:4;43125:14;;43118:36;43179:2;43170:12;;43029:159;48257:184;48309:77;48306:1;48299:88;48406:4;48403:1;48396:15;48430:4;48427:1;48420:15;48446:294;48527:1;48520:5;48517:12;48507:200;;48563:77;48560:1;48553:88;48664:4;48661:1;48654:15;48692:4;48689:1;48682:15;48507:200;48716:18;;48446:294::o;48745:1028::-;49144:4;49173:3;-1:-1:-1;;;;;49276:2:105;49268:6;49264:15;49253:9;49246:34;49316:6;49311:2;49300:9;49296:18;49289:34;49359:2;49354;49343:9;49339:18;49332:30;49379:44;49419:2;49408:9;49404:18;49396:6;49379:44;:::i;:::-;49371:52;;49432:53;49481:2;49470:9;49466:18;49458:6;49432:53;:::i;:::-;49516:3;49501:19;;49494:35;;;;-1:-1:-1;49560:3:105;49545:19;;49538:35;;;;49604:3;49589:19;;49582:35;;;;49654:15;;;49648:3;49633:19;;49626:44;49707:15;;;49701:3;49686:19;;49679:44;49754:3;49739:19;49732:35;;;;48745:1028;;-1:-1:-1;;;;48745:1028:105:o;49778:492::-;49953:3;49991:6;49985:13;50007:66;50066:6;50061:3;50054:4;50046:6;50042:17;50007:66;:::i;:::-;50136:13;;50095:16;;;;50158:70;50136:13;50095:16;50205:4;50193:17;;50158:70;:::i;:::-;50244:20;;49778:492;-1:-1:-1;;;;49778:492:105:o;50275:1133::-;50708:4;50737:3;-1:-1:-1;;;;;50840:2:105;50832:6;50828:15;50817:9;50810:34;50880:6;50875:2;50864:9;50860:18;50853:34;50923:2;50918;50907:9;50903:18;50896:30;50949:44;50989:2;50978:9;50974:18;50966:6;50949:44;:::i;:::-;50935:58;;51002:53;51051:2;51040:9;51036:18;51028:6;51002:53;:::i;:::-;51092:6;51086:3;51075:9;51071:19;51064:35;51136:6;51130:3;51119:9;51115:19;51108:35;51180:6;51174:3;51163:9;51159:19;51152:35;51236:2;51228:6;51224:15;51218:3;51207:9;51203:19;51196:44;51289:2;51281:6;51277:15;51271:3;51260:9;51256:19;51249:44;;51342:9;51334:6;51330:22;51324:3;51313:9;51309:19;51302:51;51370:32;51395:6;51387;51370:32;:::i;:::-;51362:40;50275:1133;-1:-1:-1;;;;;;;;;;;;;50275:1133:105:o;51853:395::-;51939:6;51947;51955;52008:2;51996:9;51987:7;51983:23;51979:32;51976:52;;;52024:1;52021;52014:12;51976:52;52056:9;52050:16;52106:4;52099:5;52095:16;52088:5;52085:27;52075:55;;52126:1;52123;52116:12;52075:55;52194:2;52179:18;;52173:25;52238:2;52223:18;;;52217:25;52149:5;;52173:25;;-1:-1:-1;52217:25:105;51853:395;-1:-1:-1;;;51853:395:105:o;55524:339::-;-1:-1:-1;;;;;55705:6:105;55701:55;55690:9;55683:74;55793:2;55788;55777:9;55773:18;55766:30;55664:4;55813:44;55853:2;55842:9;55838:18;55830:6;55813:44;:::i;55868:1051::-;56285:4;56314:3;56344:2;56333:9;56326:21;56370:56;56422:2;56411:9;56407:18;56399:6;56370:56;:::i;:::-;56457:2;56442:18;;;56435:34;;;;-1:-1:-1;;;;;56566:15:105;;;56561:2;56546:18;;56539:43;56618:22;;;56613:2;56598:18;;56591:50;-1:-1:-1;56650:17:105;;56736:15;;;56730:3;56715:19;;56708:44;-1:-1:-1;;56789:15:105;;;56783:3;56768:19;;56761:44;56854:4;56842:17;;;;56836:3;56821:19;;56814:46;56897:15;;;56891:3;56876:19;;;56869:44;;;;56684:15;;55868:1051;-1:-1:-1;55868:1051:105:o;56924:408::-;-1:-1:-1;;;;;57131:6:105;57127:55;57116:9;57109:74;57219:2;57214;57203:9;57199:18;57192:30;57090:4;57239:44;57279:2;57268:9;57264:18;57256:6;57239:44;:::i;:::-;57231:52;;57319:6;57314:2;57303:9;57299:18;57292:34;56924:408;;;;;;:::o;57612:128::-;57679:9;;;57700:11;;;57697:37;;;57714:18;;:::i;57745:610::-;57991:13;;57934:3;;57965;;58044:4;58071:15;;;57934:3;58114:175;58128:6;58125:1;58122:13;58114:175;;;58191:13;;58177:28;;58227:14;;;;58264:15;;;;58150:1;58143:9;58114:175;;;-1:-1:-1;;58298:21:105;;;-1:-1:-1;58335:14:105;;;;;-1:-1:-1;;;57745:610:105:o;58921:659::-;58986:5;59039:3;59032:4;59024:6;59020:17;59016:27;59006:55;;59057:1;59054;59047:12;59006:55;59086:6;59080:13;59112:4;59136:60;59152:43;59192:2;59152:43;:::i;59136:60::-;59230:15;;;59316:1;59312:10;;;;59300:23;;59296:32;;;59261:12;;;;59340:15;;;59337:35;;;59368:1;59365;59358:12;59337:35;59404:2;59396:6;59392:15;59416:135;59432:6;59427:3;59424:15;59416:135;;;59498:10;;59486:23;;59529:12;;;;59449;;59416:135;;59585:614;59714:6;59722;59775:2;59763:9;59754:7;59750:23;59746:32;59743:52;;;59791:1;59788;59781:12;59743:52;59824:9;59818:16;59853:18;59894:2;59886:6;59883:14;59880:34;;;59910:1;59907;59900:12;59880:34;59933:72;59997:7;59988:6;59977:9;59973:22;59933:72;:::i;:::-;59923:82;;60051:2;60040:9;60036:18;60030:25;60014:41;;60080:2;60070:8;60067:16;60064:36;;;60096:1;60093;60086:12;60064:36;;60119:74;60185:7;60174:8;60163:9;60159:24;60119:74;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","test_createAndRemove_FuzzSetAndEmit(address,address,bytes32,bytes)":"9e3791ff","test_createAndRemove_e2e()":"7db2a8ba","test_createWithContextAndRemove_FuzzSetAndEmit(address,address,bytes32,bytes,bytes32)":"70af4cdb","test_create_RevertOnInvalidHandler()":"dd6345ec","test_getOrderInfo_after_create_returns_all_fields()":"9658be6c","test_getOrderInfo_for_unauthorized_owner_returns_inert_defaults()":"06c30b3a","test_getOrderInfo_with_swap_guard_set_returns_guard_address()":"6f6649a6","test_getTradeableOrderWithSignature_FuzzRevertInvalidProof(address,bytes32[],bytes32,address,bytes32,bytes)":"345e8d4a","test_getTradeableOrderWithSignature_FuzzRevertInvalidSingleOrder(address,address,bytes32,bytes)":"0aa93529","test_getTradeableOrderWithSignature_ReturnsValidPayloadForNonSafe()":"a3dc493d","test_getTradeableOrderWithSignature_ReturnsValidPayloadForSafe()":"aade1182","test_getTradeableOrderWithSignature_RevertInterfaceNotSupported()":"a3d50ac5","test_isValidSafeSignature_BaseConditionalOrder_RevertOnInvalidHash()":"a19a9889","test_isValidSafeSignature_FuzzPassesContextToHandler(address,bytes32)":"945602ce","test_isValidSafeSignature_FuzzRevertInvalidProof(address,bytes32[],bytes32,address,bytes32,bytes)":"ee692c5f","test_isValidSafeSignature_FuzzRevertInvalidSingleOrder(address,address,bytes32,bytes)":"36a7d482","test_setRootWithContext_FuzzSetAndEmit(address,bytes32,bytes32)":"b379f91a","test_setRootWithContext_e2e()":"34d17a70","test_setRoot_FuzzSetAndEmit(address,bytes32)":"3ba95806","test_setRoot_e2e()":"2c434b98","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"name\":\"test_createAndRemove_FuzzSetAndEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_createAndRemove_e2e\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"ctxValue\",\"type\":\"bytes32\"}],\"name\":\"test_createWithContextAndRemove_FuzzSetAndEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_create_RevertOnInvalidHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getOrderInfo_after_create_returns_all_fields\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getOrderInfo_for_unauthorized_owner_returns_inert_defaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getOrderInfo_with_swap_guard_set_returns_guard_address\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"name\":\"test_getTradeableOrderWithSignature_FuzzRevertInvalidProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"name\":\"test_getTradeableOrderWithSignature_FuzzRevertInvalidSingleOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getTradeableOrderWithSignature_ReturnsValidPayloadForNonSafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getTradeableOrderWithSignature_ReturnsValidPayloadForSafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getTradeableOrderWithSignature_RevertInterfaceNotSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_isValidSafeSignature_BaseConditionalOrder_RevertOnInvalidHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"}],\"name\":\"test_isValidSafeSignature_FuzzPassesContextToHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"name\":\"test_isValidSafeSignature_FuzzRevertInvalidProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"name\":\"test_isValidSafeSignature_FuzzRevertInvalidSingleOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"test_setRootWithContext_FuzzSetAndEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setRootWithContext_e2e\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"test_setRoot_FuzzSetAndEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setRoot_e2e\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"},\"test_createAndRemove_FuzzSetAndEmit(address,address,bytes32,bytes)\":{\"details\":\"should be able to create and remove a single order\"},\"test_createAndRemove_e2e()\":{\"details\":\"An end-to-end test of the ComposableCoW contract that tests the following: 1. Does **NOT** validate a single order that is not authorized 2. `owner` can create a single order 3. Can lookup the validity of the single order for `owner` 4. **DOES** validate a single order that is authorized\"},\"test_createWithContextAndRemove_FuzzSetAndEmit(address,address,bytes32,bytes,bytes32)\":{\"details\":\"should be able to create and remove a single order\"},\"test_create_RevertOnInvalidHandler()\":{\"details\":\"Should disallow setting a handler that is address(0)\"},\"test_getOrderInfo_after_create_returns_all_fields()\":{\"details\":\"After `create()`, `getOrderInfo` returns the params hash, `authorized = true`, the (zero) cabinet value, and the (unset) swap guard.\"},\"test_getOrderInfo_for_unauthorized_owner_returns_inert_defaults()\":{\"details\":\"For an owner that never authorised the params, all relevant fields are inert defaults (no revert).\"},\"test_getOrderInfo_with_swap_guard_set_returns_guard_address()\":{\"details\":\"When the owner has set a swap guard, `getOrderInfo` surfaces its address.\"},\"test_getTradeableOrderWithSignature_FuzzRevertInvalidProof(address,bytes32[],bytes32,address,bytes32,bytes)\":{\"details\":\"`getTradeableOrderWithSignature` should revert if given an invalid proof\"},\"test_getTradeableOrderWithSignature_FuzzRevertInvalidSingleOrder(address,address,bytes32,bytes)\":{\"details\":\"`getTradeableOrderWithSignature` should revert if given an invalid single order\"},\"test_getTradeableOrderWithSignature_ReturnsValidPayloadForNonSafe()\":{\"details\":\"should return a valid payload for a non-safe (ERC1271Forwarder)\"},\"test_getTradeableOrderWithSignature_ReturnsValidPayloadForSafe()\":{\"details\":\"should return a valid payload for a safe\"},\"test_getTradeableOrderWithSignature_RevertInterfaceNotSupported()\":{\"details\":\"`getTradeableOrderWithSignature` should revert if the interface is not supported\"},\"test_isValidSafeSignature_BaseConditionalOrder_RevertOnInvalidHash()\":{\"details\":\"`BaseConditionalOrder` enforces that the order hash is valid\"},\"test_isValidSafeSignature_FuzzPassesContextToHandler(address,bytes32)\":{\"details\":\"Make sure `isValidSafeSignature` passes the context to the handler\"},\"test_isValidSafeSignature_FuzzRevertInvalidProof(address,bytes32[],bytes32,address,bytes32,bytes)\":{\"details\":\"Reverts on an invalid proof\"},\"test_isValidSafeSignature_FuzzRevertInvalidSingleOrder(address,address,bytes32,bytes)\":{\"details\":\"Reverts on an invalid single order\"},\"test_setRootWithContext_e2e()\":{\"details\":\"An end-to-end test of the ComposableCoW contract that tests the following: 1. Does **NOT** validate a proof that is not authorized 2. `owner` can set their merkle root 3. **DOES** validate a proof that is authorized 4. `owner` can remove their merkle root 5. Does **NOT** validate a proof that is not authorized\"},\"test_setRoot_FuzzSetAndEmit(address,bytes32)\":{\"details\":\"Can set the Merkle root for `owner`\"},\"test_setRoot_e2e()\":{\"details\":\"An end-to-end test of the ComposableCoW contract that tests the following: 1. Does **NOT** validate a proof that is not authorized 2. `owner` can set their merkle root 3. **DOES** validate a proof that is authorized 4. `owner` can remove their merkle root 5. Does **NOT** validate a proof that is not authorized\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.t.sol\":\"ComposableCoWTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.t.sol\":{\"keccak256\":\"0xff13698dde08e1b34308cf7141ebd51cced3ed1146f292eb5e6cb74e120ba91f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a7aaa505c9c72e8aab74bf4fe2efc3816c2698615c9d953bc520ebffdffcb7f0\",\"dweb:/ipfs/QmYYsToyySPh25PACqi12sW5JEnnc58tfTuJCPCsKVkBD1\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"test_createAndRemove_FuzzSetAndEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_createAndRemove_e2e"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"},{"internalType":"bytes32","name":"ctxValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"test_createWithContextAndRemove_FuzzSetAndEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_create_RevertOnInvalidHandler"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getOrderInfo_after_create_returns_all_fields"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getOrderInfo_for_unauthorized_owner_returns_inert_defaults"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getOrderInfo_with_swap_guard_set_returns_guard_address"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrderWithSignature_FuzzRevertInvalidProof"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrderWithSignature_FuzzRevertInvalidSingleOrder"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrderWithSignature_ReturnsValidPayloadForNonSafe"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrderWithSignature_ReturnsValidPayloadForSafe"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrderWithSignature_RevertInterfaceNotSupported"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_isValidSafeSignature_BaseConditionalOrder_RevertOnInvalidHash"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"test_isValidSafeSignature_FuzzPassesContextToHandler"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"test_isValidSafeSignature_FuzzRevertInvalidProof"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"test_isValidSafeSignature_FuzzRevertInvalidSingleOrder"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32","name":"data","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"test_setRootWithContext_FuzzSetAndEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setRootWithContext_e2e"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"test_setRoot_FuzzSetAndEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setRoot_e2e"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"},"test_createAndRemove_FuzzSetAndEmit(address,address,bytes32,bytes)":{"details":"should be able to create and remove a single order"},"test_createAndRemove_e2e()":{"details":"An end-to-end test of the ComposableCoW contract that tests the following: 1. Does **NOT** validate a single order that is not authorized 2. `owner` can create a single order 3. Can lookup the validity of the single order for `owner` 4. **DOES** validate a single order that is authorized"},"test_createWithContextAndRemove_FuzzSetAndEmit(address,address,bytes32,bytes,bytes32)":{"details":"should be able to create and remove a single order"},"test_create_RevertOnInvalidHandler()":{"details":"Should disallow setting a handler that is address(0)"},"test_getOrderInfo_after_create_returns_all_fields()":{"details":"After `create()`, `getOrderInfo` returns the params hash, `authorized = true`, the (zero) cabinet value, and the (unset) swap guard."},"test_getOrderInfo_for_unauthorized_owner_returns_inert_defaults()":{"details":"For an owner that never authorised the params, all relevant fields are inert defaults (no revert)."},"test_getOrderInfo_with_swap_guard_set_returns_guard_address()":{"details":"When the owner has set a swap guard, `getOrderInfo` surfaces its address."},"test_getTradeableOrderWithSignature_FuzzRevertInvalidProof(address,bytes32[],bytes32,address,bytes32,bytes)":{"details":"`getTradeableOrderWithSignature` should revert if given an invalid proof"},"test_getTradeableOrderWithSignature_FuzzRevertInvalidSingleOrder(address,address,bytes32,bytes)":{"details":"`getTradeableOrderWithSignature` should revert if given an invalid single order"},"test_getTradeableOrderWithSignature_ReturnsValidPayloadForNonSafe()":{"details":"should return a valid payload for a non-safe (ERC1271Forwarder)"},"test_getTradeableOrderWithSignature_ReturnsValidPayloadForSafe()":{"details":"should return a valid payload for a safe"},"test_getTradeableOrderWithSignature_RevertInterfaceNotSupported()":{"details":"`getTradeableOrderWithSignature` should revert if the interface is not supported"},"test_isValidSafeSignature_BaseConditionalOrder_RevertOnInvalidHash()":{"details":"`BaseConditionalOrder` enforces that the order hash is valid"},"test_isValidSafeSignature_FuzzPassesContextToHandler(address,bytes32)":{"details":"Make sure `isValidSafeSignature` passes the context to the handler"},"test_isValidSafeSignature_FuzzRevertInvalidProof(address,bytes32[],bytes32,address,bytes32,bytes)":{"details":"Reverts on an invalid proof"},"test_isValidSafeSignature_FuzzRevertInvalidSingleOrder(address,address,bytes32,bytes)":{"details":"Reverts on an invalid single order"},"test_setRootWithContext_e2e()":{"details":"An end-to-end test of the ComposableCoW contract that tests the following: 1. Does **NOT** validate a proof that is not authorized 2. `owner` can set their merkle root 3. **DOES** validate a proof that is authorized 4. `owner` can remove their merkle root 5. Does **NOT** validate a proof that is not authorized"},"test_setRoot_FuzzSetAndEmit(address,bytes32)":{"details":"Can set the Merkle root for `owner`"},"test_setRoot_e2e()":{"details":"An end-to-end test of the ComposableCoW contract that tests the following: 1. Does **NOT** validate a proof that is not authorized 2. `owner` can set their merkle root 3. **DOES** validate a proof that is authorized 4. `owner` can remove their merkle root 5. Does **NOT** validate a proof that is not authorized"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.t.sol":"ComposableCoWTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.t.sol":{"keccak256":"0xff13698dde08e1b34308cf7141ebd51cced3ed1146f292eb5e6cb74e120ba91f","urls":["bzz-raw://a7aaa505c9c72e8aab74bf4fe2efc3816c2698615c9d953bc520ebffdffcb7f0","dweb:/ipfs/QmYYsToyySPh25PACqi12sW5JEnnc58tfTuJCPCsKVkBD1"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":97} \ No newline at end of file diff --git a/out/ComposableCoW.tat.t.sol/ComposableCoWTatTest.json b/out/ComposableCoW.tat.t.sol/ComposableCoWTatTest.json new file mode 100644 index 0000000..1fa2c94 --- /dev/null +++ b/out/ComposableCoW.tat.t.sol/ComposableCoWTatTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_BalanceMet_fuzz","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"currentBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertBelowThreshold","inputs":[{"name":"currentBalance","type":"uint256","internalType":"uint256"},{"name":"threshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790553480156200002e57600080fd5b506040516200003d9062000389565b604051809103906000f0801580156200005a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055604051620000899062000397565b604051809103906000f080158015620000a6573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000d590620003a5565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012190620003b3565b604051809103906000f0801580156200013e573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200016d90620003c1565b604051809103906000f0801580156200018a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001b990620003cf565b604051809103906000f080158015620001d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020590620003dd565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f0801580156200025a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200028990620003dd565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002de573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200030d90620003dd565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000362573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003eb565b613dd1806201141383390190565b61097980620151e483390190565b6111688062015b5d83390190565b6124eb8062016cc583390190565b6102ec80620191b083390190565b610470806201949c83390190565b610e13806201990c83390190565b6201101780620003fc6000396000f3fe60806040523480156200001157600080fd5b5060043610620002aa5760003560e01c8063916a17c6116200017c578063c45a015511620000e9578063dfe274a91162000097578063e27d5153116200007a578063e27d51531462000583578063fa7626d4146200059a578063fbfa77cf14620005a857600080fd5b8063dfe274a91462000565578063e20c9f71146200057957600080fd5b8063cf06c7b711620000cc578063cf06c7b71462000523578063d21220a7146200053a578063dd1d2599146200054e57600080fd5b8063c45a015514620004fb578063c80916d4146200050f57600080fd5b8063b62654fb1162000147578063b785ce2a116200012a578063b785ce2a14620004b4578063b861619514620004cb578063ba414fa614620004f157600080fd5b8063b62654fb1462000496578063b716db6614620004aa57600080fd5b8063916a17c6146200045a5780639fbcc9ad1462000464578063ad9b04751462000478578063b5508aa9146200048c57600080fd5b80633e5e3c23116200021b57806358161a4211620001e65780637d499aa411620001c95780637d499aa414620004195780638406c079146200042d57806385226c81146200044157600080fd5b806358161a4214620003d857806366d9a9a0146200040057600080fd5b80633e5e3c2314620003995780633f7286f414620003a35780634fd0bdb614620003ad5780635116063014620003c457600080fd5b80631ed7831c1162000279578063294402cc116200025c578063294402cc14620003555780632e08d6021462000369578063329696ac146200038f57600080fd5b80631ed7831c146200032857806325be124e146200034157600080fd5b80630a9254e414620002af5780630c8548f514620002bb5780630dfe168114620002ec578063151bcd2c1462000300575b600080fd5b620002b9620005bc565b005b603354620002cf906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620002cf906001600160a01b031681565b6200031762000311366004620055bd565b6200062c565b604051620002e3939291906200562b565b62000332620006e9565b604051620002e391906200569b565b602354620002cf906001600160a01b031681565b601f54620002cf906001600160a01b031681565b620003806200037a366004620057da565b6200074d565b604051908152602001620002e3565b620002b962000829565b6200033262000937565b6200033262000999565b620002b9620003be3660046200581b565b620009fb565b602554620002cf906001600160a01b031681565b620003ef620003e93660046200583e565b62000d91565b6040519015158152602001620002e3565b6200040a62000de2565b604051620002e3919062005892565b603254620002cf906001600160a01b031681565b602a54620002cf906001600160a01b031681565b6200044b62000eea565b604051620002e391906200597f565b6200040a62000fc4565b601e54620002cf906001600160a01b031681565b603154620002cf906001600160a01b031681565b6200044b620010c3565b601b54620002cf906001600160a01b031681565b620002b96200119d565b620002b9620004c536600462005a19565b620012d9565b620004e2620004dc36600462005a57565b62001710565b604051620002e3919062005aa0565b620003ef620018e8565b601c54620002cf906001600160a01b031681565b601d54620002cf906001600160a01b031681565b6200038062000534366004620055bd565b62001a34565b602254620002cf906001600160a01b031681565b620003806200055f3660046200581b565b62001b9d565b602054620002cf906001600160a01b031681565b6200033262001bcd565b6200038062000594366004620055bd565b62001c2f565b600054620003ef9060ff1681565b602454620002cf906001600160a01b031681565b620005c662001c5c565b604051620005d49062005518565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50603a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6039602052600090815260409020805460018201546002830180546001600160a01b03909316939192620006609062005ae6565b80601f01602080910402602001604051908101604052809291908181526020018280546200068e9062005ae6565b8015620006df5780601f10620006b357610100808354040283529160200191620006df565b820191906000526020600020905b815481529060010190602001808311620006c157829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200074357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000724575b5050505050905090565b60006001825111620007e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200080457620007fc8262001fdc565b9150620007e6565b816000815181106200081a576200081a62005b3b565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000935926001600160a01b03169163f698da259160048083019260209291908290030181865afa1580156200088f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008b5919062005b6a565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000909573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200092f919062005b6a565b62002168565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000743576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000724575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000743576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000724575050505050905090565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528183106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000a6157600080fd5b505afa15801562000a76573d6000803e3d6000fd5b50505050600062000b1f6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526021546001600160a01b0390811682526022541660208201526000918101919091526103846060820152680ad78ebc5ac620000060808201527f15fff1ec031f2742922b89e46ea299903e0fb65141bd341f22f8f2f0348f113b60a082015290565b60808101839052805160315491925062000b43916001600160a01b0316856200227e565b604080518082018252601481527f62616c616e636520696e73756666696369656e7400000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fd05f3065000000000000000000000000000000000000000000000000000000009162000bc49160240162005b84565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262000c389160040162005b84565b600060405180830381600087803b15801562000c5357600080fd5b505af115801562000c68573d6000803e3d6000fd5b5050603a546031546040516001600160a01b03928316945063b8296fc49350911690600090819062000cf2908790602001600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401525063ffffffff60608401511660608301526080830151608083015260a083015160a083015292915050565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262000d46959493929060040162005b99565b61018060405180830381865afa15801562000d65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d8b919062005c20565b50505050565b81516000908290825b8181101562000dd65762000dcb8387838151811062000dbd5762000dbd62005b3b565b602002602001015162001b9d565b925060010162000d9a565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000ee15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000ec857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000e745790505b5050505050815250508152602001906001019062000e06565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000ee157838290600052602060002001805462000f309062005ae6565b80601f016020809104026020016040519081016040528092919081815260200182805462000f5e9062005ae6565b801562000faf5780601f1062000f835761010080835404028352916020019162000faf565b820191906000526020600020905b81548152906001019060200180831162000f9157829003601f168201915b50505050508152602001906001019062000f0e565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000ee15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010aa57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620010565790505b5050505050815250508152602001906001019062000fe8565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000ee1578382906000526020600020018054620011099062005ae6565b80601f0160208091040260200160405190810160405280929190818152602001828054620011379062005ae6565b8015620011885780601f106200115c5761010080835404028352916020019162001188565b820191906000526020600020905b8154815290600101906020018083116200116a57829003601f168201915b505050505081526020019060010190620010e7565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000935946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562001219573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200123f919062005b6a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620012a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012c7919062005ceb565b6034546001600160a01b031662002292565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200133f57600080fd5b505afa15801562001354573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152858410156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620013bf57600080fd5b505afa158015620013d4573d6000803e3d6000fd5b50506040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200144257600080fd5b505af115801562001457573d6000803e3d6000fd5b50506040805160c0810182526021546001600160a01b03908116808352602254821660208401528982169383019390935261038460608301526080820188905260a08201879052603154919450620014b2935016846200227e565b603a546031546040805184516001600160a01b0390811660208084019190915286015181168284015291850151821660608083019190915285015163ffffffff1660808083019190915285015160a08083019190915285015160c082015260009382169263b8296fc49216908490819060e00160408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262001579959493929060040162005b99565b61018060405180830381865afa15801562001598573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015be919062005c20565b8051602154919250620015da916001600160a01b031662002292565b6020810151602254620015f791906001600160a01b031662002292565b62001607816060015184620023a4565b6200161881608001516001620023a4565b6200162881604001518762002292565b620016428160a0015163ffffffff166364988b2c620023a4565b620016528160c001518562002168565b620016638160e001516000620023a4565b620016948161010001517ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677562002168565b620016a68161012001516000620024a4565b620016d78161014001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc962002168565b620017088161016001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc962002168565b505050505050565b60606001835111620017a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c656166000000000000000000000000000000000000000000000000000000006064820152608401620007dd565b6000620017b2845162001a34565b67ffffffffffffffff811115620017cd57620017cd620056b0565b604051908082528060200260200182016040528015620017f7578160200160208202803683370190505b50905060005b600185511115620018de57836001166001036200185b578460018503815181106200182c576200182c62005b3b565b602002602001015182828151811062001849576200184962005b3b565b602002602001018181525050620018c2565b8451846001010362001880576000801b82828151811062001849576200184962005b3b565b84846001018151811062001898576200189862005b3b565b6020026020010151828281518110620018b557620018b562005b3b565b6020026020010181815250505b600101600284049350620018d68562001fdc565b9450620017fd565b5090505b92915050565b60008054610100900460ff1615620019095750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001a2f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620019b1917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005d0b565b60408051601f1981840301815290829052620019cd9162005d55565b6000604051808303816000865af19150503d806000811462001a0c576040519150601f19603f3d011682016040523d82523d6000602084013e62001a11565b606091505b509150508080602001905181019062001a2b919062005d73565b9150505b919050565b60006001821162001a4757506000919050565b600082700100000000000000000000000000000000811062001a7857608093841c9362001a75908362005dc0565b91505b68010000000000000000841062001a9e57604093841c9362001a9b908362005dc0565b91505b640100000000841062001ac057602093841c9362001abd908362005dc0565b91505b62010000841062001ae057601093841c9362001add908362005dc0565b91505b610100841062001aff57600893841c9362001afc908362005dc0565b91505b6010841062001b1d57600493841c9362001b1a908362005dc0565b91505b6004841062001b3b57600293841c9362001b38908362005dc0565b91505b6002841062001b545762001b5160018362005dc0565b91505b60008162001b658119600162005dc0565b169050818114801562001b785750600083115b1562001b875750909392505050565b62001b9483600162005dc0565b95945050505050565b6000818310801562001bb757836000528260205262001bc0565b82600052836020525b5050604060002092915050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000743576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000724575050505050905090565b6000808219600101831683145b831562001c5457600193841c93919091019062001c3c565b900392915050565b62001c6662002698565b6025546040516001600160a01b039091169062001c839062005526565b6001600160a01b039091168152602001604051809103906000f08015801562001cb0573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162001e3894938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562001d71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d97919062005b6a565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062001e2162002a5d565b6031546001600160a01b0316949392919062002b37565b60405162001e469062005534565b604051809103906000f08015801562001e63573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162001eaa9062005542565b604051809103906000f08015801562001ec7573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162001f0e9062005550565b604051809103906000f08015801562001f2b573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560345460405191169062001f74906200555e565b6001600160a01b039091168152602001604051809103906000f08015801562001fa1573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060806000835190508060011660010362002099576002810460010167ffffffffffffffff811115620020135762002013620056b0565b6040519080825280602002602001820160405280156200203d578160200160208202803683370190505b5091506200206e8460018303815181106200205c576200205c62005b3b565b60200260200101516000801b62001b9d565b8260018451038151811062002087576200208762005b3b565b602002602001018181525050620020e6565b6002810467ffffffffffffffff811115620020b857620020b8620056b0565b604051908082528060200260200182016040528015620020e2578160200160208202803683370190505b5091505b6000805b600183038110156200215e576200212f8682815181106200210f576200210f62005b3b565b602002602001015187836001018151811062000dbd5762000dbd62005b3b565b84838151811062002144576200214462005b3b565b6020908102919091010152600190910190600201620020ea565b5091949350505050565b8082146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021f69060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99826040516200222f919062005dd6565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162002268919062005e22565b60405180910390a16200227a62002d6a565b5050565b6200228d838383600062002eb1565b505050565b806001600160a01b0316826001600160a01b0316146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023329060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200236b919062005e60565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162002268919062005eb5565b8082146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620024329060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8826040516200246b919062005dd6565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162002268919062005e22565b801515821515146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620025369060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382620025a1576040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250620025d8565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620025e7919062005ef3565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162002652576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002689565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002268919062005f45565b620026a262003148565b620026e26040518060400160405280600581526020017f616c696365000000000000000000000000000000000000000000000000000000815250620035ab565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f620000000000000000000000000000000000000000000000000000000000918101919091526200276590620035ab565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620027e890620035ab565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462002847929182169116683635c9adc5dea000006200227e565b602254602d546200286f916001600160a01b039081169116683635c9adc5dea000006200227e565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b031691839150600090620028b557620028b562005b3b565b6001600160a01b039283166020918202929092010152602d54825191169082906001908110620028e957620028e962005b3b565b6001600160a01b039283166020918202929092010152602f548251911690829060029081106200291d576200291d62005b3b565b6001600160a01b039283166020918202929092010152601c54601b54601e5462002957939283169291821691859160029116600062003731565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620029af939283169291821691859160029116600162003731565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462002a069392831692918216918591600291168162003731565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462002a5a929182169116683635c9adc5dea000006200227e565b50565b604080516002808252606082810190935260009190816020015b604080518082019091526000808252602082015281526020019060019003908162002a7757505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062002ad85762002ad862005b3b565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062002b215762002b2162005b3b565b6020026020010181905250620018e28162003835565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9e919062005b6a565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b815260040162002be59a9998979695949392919062005fbf565b602060405180830381865afa15801562002c03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c29919062005b6a565b905062002c368362003835565b9250606060005b845181101562002cb3578162002c798487848151811062002c625762002c6262005b3b565b60200260200101516200396e90919063ffffffff16565b60405160200162002c8c92919062006036565b6040516020818303038152906040529150808062002caa9062006069565b91505062002c3d565b50886001600160a01b0316636a7612028989898960008060008060008b60405160200162002ce2919062005d55565b6040516020818303038152906040526040518b63ffffffff1660e01b815260040162002d189a99989796959493929190620060a4565b6020604051808303816000875af115801562002d38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d5e919062005d73565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002e835760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002e1e929160200162005d0b565b60408051601f198184030181529082905262002e3a9162005d55565b6000604051808303816000865af19150503d806000811462002e79576040519150601f19603f3d011682016040523d82523d6000602084013e62002e7e565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162002f359162005d55565b6000604051808303816000865af19150503d806000811462002f74576040519150601f19603f3d011682016040523d82523d6000602084013e62002f79565b606091505b5091505060008180602001905181019062002f95919062005b6a565b905062002fe88462002fe18762002fda7f70a082310000000000000000000000000000000000000000000000000000000062002fd360058d62003a98565b9062003ad8565b9062003b11565b9062003b3a565b8215620017085760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b0389169162003061919062005d55565b6000604051808303816000865af19150503d8060008114620030a0576040519150601f19603f3d011682016040523d82523d6000602084013e620030a5565b606091505b50915050600081806020019051810190620030c1919062005b6a565b905082861015620030ec57620030d886846200612b565b620030e490826200612b565b905062003107565b620030f883876200612b565b62003104908262005dc0565b90505b6200313e8162002fe17f18160ddd0000000000000000000000000000000000000000000000000000000062002fd360058d62003a98565b5050505050505050565b620031886040518060400160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250620035ab565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c7665720000000000000000000000000000000000000000000000000000918101919091526200320b90620035ab565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c740000000000000000000000000000000000000000000000918101919091526200328e9062003b46565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051600090620032d7906200556c565b604051809103906000f080158015620032f4573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b1580156200335857600080fd5b505af11580156200336d573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062003390906200557a565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620033c4573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562003451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003477919062005ceb565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200351557600080fd5b505af11580156200352a573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200358f57600080fd5b505af1158015620035a4573d6000803e3d6000fd5b5050505050565b6040805180820190915260008082526020820152600082604051602001620035d4919062005d55565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562003659573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367f919062005ceb565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620036d6908490889060040162006141565b600060405180830381600087803b158015620036f157600080fd5b505af115801562003706573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b888860008960008060006040516024016200376d979695949392919062006165565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252620037e492918790600401620061cf565b6020604051808303816000875af115801562003804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200382a919062005ceb565b979650505050505050565b606060005b8251811015620039675760006200385382600162005dc0565b90505b8351811015620039515783818151811062003875576200387562005b3b565b6020026020010151600001516001600160a01b03168483815181106200389f576200389f62005b3b565b6020026020010151600001516001600160a01b031611156200393c576000848381518110620038d257620038d262005b3b565b60200260200101519050848281518110620038f157620038f162005b3b565b60200260200101518584815181106200390e576200390e62005b3b565b6020026020010181905250808583815181106200392f576200392f62005b3b565b6020026020010181905250505b80620039488162006069565b91505062003856565b50806200395e8162006069565b9150506200383a565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015620039ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a15919062006203565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262003ad1565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003ad1565b6200227a828262003b5a565b600062003b53826200402e565b5092915050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562003bcd57602002820191906000526020600020905b81548152602001906001019080831162003bb8575b5050505050905060008362003be2836200417c565b60405160200162003bf592919062005d0b565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a16835281529281209194509092909162003c6191869188910162006242565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662003c9c5762003c9a8762004229565b505b6001600160a01b0385166000908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519091839162003cf591879189910162006242565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162003d3c919062005d55565b600060405180830381855afa9150503d806000811462003d79576040519150601f19603f3d011682016040523d82523d6000602084013e62003d7e565b606091505b50915062003d9b90508162003d958860206200627e565b62004236565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003e1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e41919062005b6a565b905080821462003f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620007dd565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562003f9d57600080fd5b505af115801562003fb2573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200401a60028b01600062005588565b896004016000905550505050505050505050565b6000808260405160200162004044919062005d55565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620040c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040ec919062005ceb565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062004143908590879060040162006141565b600060405180830381600087803b1580156200415e57600080fd5b505af115801562004173573d6000803e3d6000fd5b50505050915091565b60606000825160206200419091906200627e565b67ffffffffffffffff811115620041ab57620041ab620056b0565b6040519080825280601f01601f191660200182016040528015620041d6576020820181803683370190505b50905060005b835181101562003b53576000848281518110620041fd57620041fd62005b3b565b602002602001015190508082602002602001840152508080620042209062006069565b915050620041dc565b6000620018e282620042d8565b600080600060208551116200424d57845162004250565b60205b905060005b81811015620042ce576200426b8160086200627e565b8662004278838862005dc0565b815181106200428b576200428b62005b3b565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620042c58162006069565b91505062004255565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200434a57602002820191906000526020600020905b81548152602001906001019080831162004335575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905195965094919350620043ae9250859187910162006242565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562004465576001600160a01b0384166000908152602087815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519092916200443591859187910162006242565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200447383620053d3565b6040516020016200448692919062005d0b565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620044f657600080fd5b505af11580156200450b573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200452c919062005d55565b600060405180830381855afa9150503d806000811462004569576040519150601f19603f3d011682016040523d82523d6000602084013e6200456e565b606091505b5091506200458b905081620045858760206200627e565b62005480565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562004606573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620046309190810190620062fa565b509050805160010362004a625760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062004688576200468862005b3b565b60200260200101516040518363ffffffff1660e01b8152600401620046c29291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620046e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004706919062005b6a565b90508062004771577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062004746576200474662005b3b565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200484e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620007dd565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200488692919062006242565b6040516020818303038152906040528051906020012085600081518110620048b257620048b262005b3b565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062004924576200492462005b3b565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262004987918a918c910162006242565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162004a09918a918c910162006242565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905550620051cb565b600181511115620051405760005b8151811015620051395760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062004ac45762004ac462005b3b565b60200260200101516040518363ffffffff1660e01b815260040162004afe9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562004b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b42919062005b6a565b90508062004bac577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062004b815762004b8162005b3b565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062004bf45762004bf462005b3b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b15801562004c8457600080fd5b505af115801562004c99573d6000803e3d6000fd5b50505050600060608a6001600160a01b03168760405162004cbb919062005d55565b600060405180830381855afa9150503d806000811462004cf8576040519150601f19603f3d011682016040523d82523d6000602084013e62004cfd565b606091505b50909250905062004d1581620045858b60206200627e565b955081801562004d4457507f133700000000000000000000000000000000000000000000000000000000000086145b156200504e577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162004d8292919062006242565b6040516020818303038152906040528051906020012088888151811062004dad5762004dad62005b3b565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062004e1e5762004e1e62005b3b565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f168352845280822090519293909262004e81918d918f910162006242565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162004f3892919062006242565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062004fbb5762004fbb62005b3b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200502c57600080fd5b505af115801562005041573d6000803e3d6000fd5b5050505050505062005139565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062005096576200509662005b3b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200510757600080fd5b505af11580156200511c573d6000803e3d6000fd5b505050505050508080620051309062006069565b91505062004a70565b50620051cb565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620007dd565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620052279188918a910162006242565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620052de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620007dd565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200534260028a01600062005588565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620053a09188918a910162006242565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620053e791906200627e565b67ffffffffffffffff811115620054025762005402620056b0565b6040519080825280601f01601f1916602001820160405280156200542d576020820181803683370190505b50905060005b835181101562003b5357600084828151811062005454576200545462005b3b565b602002602001015190508082602002602001840152508080620054779062006069565b91505062005433565b60008060006020855111620054975784516200549a565b60205b905060005b81811015620042ce57620054b58160086200627e565b86620054c2838862005dc0565b81518110620054d557620054d562005b3b565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200550f8162006069565b9150506200549f565b610acf806200636683390190565b61237a8062006e3583390190565b61013c80620091af83390190565b61080980620092eb83390190565b6102008062009af483390190565b6112468062009cf483390190565b610d06806200af3a83390190565b6153a2806200bc4083390190565b508054600082559060005260206000209081019062002a5a91905b80821115620055b95760008155600101620055a3565b5090565b600060208284031215620055d057600080fd5b5035919050565b60005b83811015620055f4578181015183820152602001620055da565b50506000910152565b6000815180845262005617816020860160208601620055d7565b601f01601f19169290920160200192915050565b6001600160a01b038416815282602082015260606040820152600062001b946060830184620055fd565b600081518084526020808501945080840160005b83811015620056905781516001600160a01b03168752958201959082019060010162005669565b509495945050505050565b60208152600062003ad1602083018462005655565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620057065762005706620056b0565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715620057385762005738620056b0565b604052919050565b600067ffffffffffffffff8211156200575d576200575d620056b0565b5060051b60200190565b600082601f8301126200577957600080fd5b81356020620057926200578c8362005740565b6200570c565b82815260059290921b84018101918181019086841115620057b257600080fd5b8286015b84811015620057cf5780358352918301918301620057b6565b509695505050505050565b600060208284031215620057ed57600080fd5b813567ffffffffffffffff8111156200580557600080fd5b620058138482850162005767565b949350505050565b600080604083850312156200582f57600080fd5b50508035926020909101359150565b6000806000606084860312156200585457600080fd5b83359250602084013567ffffffffffffffff8111156200587357600080fd5b620058818682870162005767565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562005970578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200595a5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005916565b50978a01979550505091870191600101620058ba565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620059f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452620059e3858351620055fd565b94509285019290850190600101620059a6565b5092979650505050505050565b6001600160a01b038116811462002a5a57600080fd5b6000806000806080858703121562005a3057600080fd5b843562005a3d8162005a03565b966020860135965060408601359560600135945092505050565b6000806040838503121562005a6b57600080fd5b823567ffffffffffffffff81111562005a8357600080fd5b62005a918582860162005767565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b8181101562005ada5783518352928401929184019160010162005abc565b50909695505050505050565b600181811c9082168062005afb57607f821691505b60208210810362005b35577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121562005b7d57600080fd5b5051919050565b60208152600062003ad16020830184620055fd565b60006001600160a01b03808816835280871660208401525084604083015260a0606083015262005bcd60a0830185620055fd565b828103608084015262005be18185620055fd565b98975050505050505050565b805162001a2f8162005a03565b805163ffffffff8116811462001a2f57600080fd5b8051801515811462001a2f57600080fd5b6000610180828403121562005c3457600080fd5b62005c3e620056df565b62005c498362005bed565b815262005c596020840162005bed565b602082015262005c6c6040840162005bed565b6040820152606083015160608201526080830151608082015262005c9360a0840162005bfa565b60a082015260c083015160c082015260e083015160e082015261010080840151818301525061012062005cc881850162005c0f565b908201526101408381015190820152610160928301519281019290925250919050565b60006020828403121562005cfe57600080fd5b815162003ad18162005a03565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162005d47816004850160208701620055d7565b919091016004019392505050565b6000825162005d69818460208701620055d7565b9190910192915050565b60006020828403121562005d8657600080fd5b62003ad18262005c0f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620018e257620018e262005d91565b60408152600062005e1460408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b60408152600062005e1460408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062005e9e60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062005e9e60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062005f3160408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620058138185620055fd565b60408152600062005f3160408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6002811062005fbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262005feb8285018d620055fd565b925062005ffc606085018c62005f83565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200604a818460208801620055d7565b83519083019062006060818360208801620055d7565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200609d576200609d62005d91565b5060010190565b60006101406001600160a01b03808e1684528c6020850152816040850152620060d08285018d620055fd565b9150620060e1606085018c62005f83565b8960808501528860a08501528760c085015280871660e0850152808616610100850152508281036101208401526200611a8185620055fd565b9d9c50505050505050505050505050565b81810381811115620018e257620018e262005d91565b6001600160a01b0383168152604060208201526000620058136040830184620055fd565b60006101008083526200617b8184018b62005655565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b0384168152606060208201526000620061f36060830185620055fd565b9050826040830152949350505050565b6000806000606084860312156200621957600080fd5b835160ff811681146200622b57600080fd5b602085015160409095015190969495509392505050565b825160009082906020808701845b838110156200626e5781518552938201939082019060010162006250565b5050948252509092019392505050565b8082028115828204841417620018e257620018e262005d91565b600082601f830112620062aa57600080fd5b81516020620062bd6200578c8362005740565b82815260059290921b84018101918181019086841115620062dd57600080fd5b8286015b84811015620057cf5780518352918301918301620062e1565b600080604083850312156200630e57600080fd5b825167ffffffffffffffff808211156200632757600080fd5b620063358683870162006298565b935060208501519150808211156200634c57600080fd5b506200635b8582860162006298565b915050925092905056fe608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a26469706673582212200e8111dfd72c62c5518a5dc0c4e6410019e4bcba8c493a4e103d94b1a141adc764736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"327:3142:113:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:30;;;;;;;;;;;327:3142:113;;;;;;;;;;1168:10:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:116;:22;;-1:-1:-1;;;;;;1156:22:116;-1:-1:-1;;;;;1156:22:116;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:116;:32;;-1:-1:-1;;;;;;1188:32:116;-1:-1:-1;;;;;1188:32:116;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:116;:44;;-1:-1:-1;;;;;;1230:44:116;-1:-1:-1;;;;;1230:44:116;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:116;:42;;-1:-1:-1;;;;;;1323:42:116;-1:-1:-1;;;;;1323:42:116;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:116;:27;;-1:-1:-1;;;;;;1375:27:116;-1:-1:-1;;;;;1375:27:116;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:116;:37;;-1:-1:-1;;;;;;1412:37:116;-1:-1:-1;;;;;1412:37:116;;;;;;;;;;875:30:117;;;;;:::i;:::-;317:2:122;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:122;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:122;501:19;;494:33;559:3;544:19;875:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:117;:56;;-1:-1:-1;;;;;;851:56:117;-1:-1:-1;;;;;851:56:117;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:122;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:122;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:122;1061:19;;1054:33;1119:3;1104:19;941:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:117;:56;;-1:-1:-1;;;;;;917:56:117;-1:-1:-1;;;;;917:56:117;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:122;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:122;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:122;1621:19;;1614:33;1679:3;1664:19;1007:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:117;:56;;-1:-1:-1;;;;;;983:56:117;-1:-1:-1;;;;;983:56:117;;;;;;;;;;327:3142:113;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:122:-;327:3142:113;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002aa5760003560e01c8063916a17c6116200017c578063c45a015511620000e9578063dfe274a91162000097578063e27d5153116200007a578063e27d51531462000583578063fa7626d4146200059a578063fbfa77cf14620005a857600080fd5b8063dfe274a91462000565578063e20c9f71146200057957600080fd5b8063cf06c7b711620000cc578063cf06c7b71462000523578063d21220a7146200053a578063dd1d2599146200054e57600080fd5b8063c45a015514620004fb578063c80916d4146200050f57600080fd5b8063b62654fb1162000147578063b785ce2a116200012a578063b785ce2a14620004b4578063b861619514620004cb578063ba414fa614620004f157600080fd5b8063b62654fb1462000496578063b716db6614620004aa57600080fd5b8063916a17c6146200045a5780639fbcc9ad1462000464578063ad9b04751462000478578063b5508aa9146200048c57600080fd5b80633e5e3c23116200021b57806358161a4211620001e65780637d499aa411620001c95780637d499aa414620004195780638406c079146200042d57806385226c81146200044157600080fd5b806358161a4214620003d857806366d9a9a0146200040057600080fd5b80633e5e3c2314620003995780633f7286f414620003a35780634fd0bdb614620003ad5780635116063014620003c457600080fd5b80631ed7831c1162000279578063294402cc116200025c578063294402cc14620003555780632e08d6021462000369578063329696ac146200038f57600080fd5b80631ed7831c146200032857806325be124e146200034157600080fd5b80630a9254e414620002af5780630c8548f514620002bb5780630dfe168114620002ec578063151bcd2c1462000300575b600080fd5b620002b9620005bc565b005b603354620002cf906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620002cf906001600160a01b031681565b6200031762000311366004620055bd565b6200062c565b604051620002e3939291906200562b565b62000332620006e9565b604051620002e391906200569b565b602354620002cf906001600160a01b031681565b601f54620002cf906001600160a01b031681565b620003806200037a366004620057da565b6200074d565b604051908152602001620002e3565b620002b962000829565b6200033262000937565b6200033262000999565b620002b9620003be3660046200581b565b620009fb565b602554620002cf906001600160a01b031681565b620003ef620003e93660046200583e565b62000d91565b6040519015158152602001620002e3565b6200040a62000de2565b604051620002e3919062005892565b603254620002cf906001600160a01b031681565b602a54620002cf906001600160a01b031681565b6200044b62000eea565b604051620002e391906200597f565b6200040a62000fc4565b601e54620002cf906001600160a01b031681565b603154620002cf906001600160a01b031681565b6200044b620010c3565b601b54620002cf906001600160a01b031681565b620002b96200119d565b620002b9620004c536600462005a19565b620012d9565b620004e2620004dc36600462005a57565b62001710565b604051620002e3919062005aa0565b620003ef620018e8565b601c54620002cf906001600160a01b031681565b601d54620002cf906001600160a01b031681565b6200038062000534366004620055bd565b62001a34565b602254620002cf906001600160a01b031681565b620003806200055f3660046200581b565b62001b9d565b602054620002cf906001600160a01b031681565b6200033262001bcd565b6200038062000594366004620055bd565b62001c2f565b600054620003ef9060ff1681565b602454620002cf906001600160a01b031681565b620005c662001c5c565b604051620005d49062005518565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50603a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6039602052600090815260409020805460018201546002830180546001600160a01b03909316939192620006609062005ae6565b80601f01602080910402602001604051908101604052809291908181526020018280546200068e9062005ae6565b8015620006df5780601f10620006b357610100808354040283529160200191620006df565b820191906000526020600020905b815481529060010190602001808311620006c157829003601f168201915b5050505050905083565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200074357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000724575b5050505050905090565b60006001825111620007e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156200080457620007fc8262001fdc565b9150620007e6565b816000815181106200081a576200081a62005b3b565b60200260200101519050919050565b603454604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000935926001600160a01b03169163f698da259160048083019260209291908290030181865afa1580156200088f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008b5919062005b6a565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000909573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200092f919062005b6a565b62002168565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000743576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000724575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000743576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000724575050505050905090565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528183106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000a6157600080fd5b505afa15801562000a76573d6000803e3d6000fd5b50505050600062000b1f6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526021546001600160a01b0390811682526022541660208201526000918101919091526103846060820152680ad78ebc5ac620000060808201527f15fff1ec031f2742922b89e46ea299903e0fb65141bd341f22f8f2f0348f113b60a082015290565b60808101839052805160315491925062000b43916001600160a01b0316856200227e565b604080518082018252601481527f62616c616e636520696e73756666696369656e7400000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fd05f3065000000000000000000000000000000000000000000000000000000009162000bc49160240162005b84565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262000c389160040162005b84565b600060405180830381600087803b15801562000c5357600080fd5b505af115801562000c68573d6000803e3d6000fd5b5050603a546031546040516001600160a01b03928316945063b8296fc49350911690600090819062000cf2908790602001600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401525063ffffffff60608401511660608301526080830151608083015260a083015160a083015292915050565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262000d46959493929060040162005b99565b61018060405180830381865afa15801562000d65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d8b919062005c20565b50505050565b81516000908290825b8181101562000dd65762000dcb8387838151811062000dbd5762000dbd62005b3b565b602002602001015162001b9d565b925060010162000d9a565b50509093149392505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000ee15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000ec857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000e745790505b5050505050815250508152602001906001019062000e06565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000ee157838290600052602060002001805462000f309062005ae6565b80601f016020809104026020016040519081016040528092919081815260200182805462000f5e9062005ae6565b801562000faf5780601f1062000f835761010080835404028352916020019162000faf565b820191906000526020600020905b81548152906001019060200180831162000f9157829003601f168201915b50505050508152602001906001019062000f0e565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000ee15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010aa57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620010565790505b5050505050815250508152602001906001019062000fe8565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000ee1578382906000526020600020018054620011099062005ae6565b80601f0160208091040260200160405190810160405280929190818152602001828054620011379062005ae6565b8015620011885780601f106200115c5761010080835404028352916020019162001188565b820191906000526020600020905b8154815290600101906020018083116200116a57829003601f168201915b505050505081526020019060010190620010e7565b601e54603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162000935946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562001219573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200123f919062005b6a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620012a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012c7919062005ceb565b6034546001600160a01b031662002292565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200133f57600080fd5b505afa15801562001354573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152858410156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620013bf57600080fd5b505afa158015620013d4573d6000803e3d6000fd5b50506040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526364988a336004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200144257600080fd5b505af115801562001457573d6000803e3d6000fd5b50506040805160c0810182526021546001600160a01b03908116808352602254821660208401528982169383019390935261038460608301526080820188905260a08201879052603154919450620014b2935016846200227e565b603a546031546040805184516001600160a01b0390811660208084019190915286015181168284015291850151821660608083019190915285015163ffffffff1660808083019190915285015160a08083019190915285015160c082015260009382169263b8296fc49216908490819060e00160408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262001579959493929060040162005b99565b61018060405180830381865afa15801562001598573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015be919062005c20565b8051602154919250620015da916001600160a01b031662002292565b6020810151602254620015f791906001600160a01b031662002292565b62001607816060015184620023a4565b6200161881608001516001620023a4565b6200162881604001518762002292565b620016428160a0015163ffffffff166364988b2c620023a4565b620016528160c001518562002168565b620016638160e001516000620023a4565b620016948161010001517ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677562002168565b620016a68161012001516000620024a4565b620016d78161014001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc962002168565b620017088161016001517f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc962002168565b505050505050565b60606001835111620017a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c656166000000000000000000000000000000000000000000000000000000006064820152608401620007dd565b6000620017b2845162001a34565b67ffffffffffffffff811115620017cd57620017cd620056b0565b604051908082528060200260200182016040528015620017f7578160200160208202803683370190505b50905060005b600185511115620018de57836001166001036200185b578460018503815181106200182c576200182c62005b3b565b602002602001015182828151811062001849576200184962005b3b565b602002602001018181525050620018c2565b8451846001010362001880576000801b82828151811062001849576200184962005b3b565b84846001018151811062001898576200189862005b3b565b6020026020010151828281518110620018b557620018b562005b3b565b6020026020010181815250505b600101600284049350620018d68562001fdc565b9450620017fd565b5090505b92915050565b60008054610100900460ff1615620019095750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001a2f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620019b1917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005d0b565b60408051601f1981840301815290829052620019cd9162005d55565b6000604051808303816000865af19150503d806000811462001a0c576040519150601f19603f3d011682016040523d82523d6000602084013e62001a11565b606091505b509150508080602001905181019062001a2b919062005d73565b9150505b919050565b60006001821162001a4757506000919050565b600082700100000000000000000000000000000000811062001a7857608093841c9362001a75908362005dc0565b91505b68010000000000000000841062001a9e57604093841c9362001a9b908362005dc0565b91505b640100000000841062001ac057602093841c9362001abd908362005dc0565b91505b62010000841062001ae057601093841c9362001add908362005dc0565b91505b610100841062001aff57600893841c9362001afc908362005dc0565b91505b6010841062001b1d57600493841c9362001b1a908362005dc0565b91505b6004841062001b3b57600293841c9362001b38908362005dc0565b91505b6002841062001b545762001b5160018362005dc0565b91505b60008162001b658119600162005dc0565b169050818114801562001b785750600083115b1562001b875750909392505050565b62001b9483600162005dc0565b95945050505050565b6000818310801562001bb757836000528260205262001bc0565b82600052836020525b5050604060002092915050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000743576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000724575050505050905090565b6000808219600101831683145b831562001c5457600193841c93919091019062001c3c565b900392915050565b62001c6662002698565b6025546040516001600160a01b039091169062001c839062005526565b6001600160a01b039091168152602001604051809103906000f08015801562001cb0573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905162001e3894938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa15801562001d71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d97919062005b6a565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062001e2162002a5d565b6031546001600160a01b0316949392919062002b37565b60405162001e469062005534565b604051809103906000f08015801562001e63573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162001eaa9062005542565b604051809103906000f08015801562001ec7573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162001f0e9062005550565b604051809103906000f08015801562001f2b573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560345460405191169062001f74906200555e565b6001600160a01b039091168152602001604051809103906000f08015801562001fa1573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060806000835190508060011660010362002099576002810460010167ffffffffffffffff811115620020135762002013620056b0565b6040519080825280602002602001820160405280156200203d578160200160208202803683370190505b5091506200206e8460018303815181106200205c576200205c62005b3b565b60200260200101516000801b62001b9d565b8260018451038151811062002087576200208762005b3b565b602002602001018181525050620020e6565b6002810467ffffffffffffffff811115620020b857620020b8620056b0565b604051908082528060200260200182016040528015620020e2578160200160208202803683370190505b5091505b6000805b600183038110156200215e576200212f8682815181106200210f576200210f62005b3b565b602002602001015187836001018151811062000dbd5762000dbd62005b3b565b84838151811062002144576200214462005b3b565b6020908102919091010152600190910190600201620020ea565b5091949350505050565b8082146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021f69060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99826040516200222f919062005dd6565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162002268919062005e22565b60405180910390a16200227a62002d6a565b5050565b6200228d838383600062002eb1565b505050565b806001600160a01b0316826001600160a01b0316146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023329060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200236b919062005e60565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162002268919062005eb5565b8082146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620024329060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8826040516200246b919062005dd6565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162002268919062005e22565b801515821515146200227a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620025369060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382620025a1576040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250620025d8565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620025e7919062005ef3565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162002652576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062002689565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162002268919062005f45565b620026a262003148565b620026e26040518060400160405280600581526020017f616c696365000000000000000000000000000000000000000000000000000000815250620035ab565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f620000000000000000000000000000000000000000000000000000000000918101919091526200276590620035ab565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c00000000000000000000000000000000000000000000000000000091810191909152620027e890620035ab565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b5462002847929182169116683635c9adc5dea000006200227e565b602254602d546200286f916001600160a01b039081169116683635c9adc5dea000006200227e565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b031691839150600090620028b557620028b562005b3b565b6001600160a01b039283166020918202929092010152602d54825191169082906001908110620028e957620028e962005b3b565b6001600160a01b039283166020918202929092010152602f548251911690829060029081106200291d576200291d62005b3b565b6001600160a01b039283166020918202929092010152601c54601b54601e5462002957939283169291821691859160029116600062003731565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e54620029af939283169291821691859160029116600162003731565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462002a069392831692918216918591600291168162003731565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462002a5a929182169116683635c9adc5dea000006200227e565b50565b604080516002808252606082810190935260009190816020015b604080518082019091526000808252602082015281526020019060019003908162002a7757505060408051808201909152602b546001600160a01b03168152602c546020820152815191925090829060009062002ad85762002ad862005b3b565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e549181019190915281518290600190811062002b215762002b2162005b3b565b6020026020010181905250620018e28162003835565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9e919062005b6a565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b815260040162002be59a9998979695949392919062005fbf565b602060405180830381865afa15801562002c03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c29919062005b6a565b905062002c368362003835565b9250606060005b845181101562002cb3578162002c798487848151811062002c625762002c6262005b3b565b60200260200101516200396e90919063ffffffff16565b60405160200162002c8c92919062006036565b6040516020818303038152906040529150808062002caa9062006069565b91505062002c3d565b50886001600160a01b0316636a7612028989898960008060008060008b60405160200162002ce2919062005d55565b6040516020818303038152906040526040518b63ffffffff1660e01b815260040162002d189a99989796959493929190620060a4565b6020604051808303816000875af115801562002d38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d5e919062005d73565b50505050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002e835760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002e1e929160200162005d0b565b60408051601f198184030181529082905262002e3a9162005d55565b6000604051808303816000865af19150503d806000811462002e79576040519150601f19603f3d011682016040523d82523d6000602084013e62002e7e565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162002f359162005d55565b6000604051808303816000865af19150503d806000811462002f74576040519150601f19603f3d011682016040523d82523d6000602084013e62002f79565b606091505b5091505060008180602001905181019062002f95919062005b6a565b905062002fe88462002fe18762002fda7f70a082310000000000000000000000000000000000000000000000000000000062002fd360058d62003a98565b9062003ad8565b9062003b11565b9062003b3a565b8215620017085760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b0389169162003061919062005d55565b6000604051808303816000865af19150503d8060008114620030a0576040519150601f19603f3d011682016040523d82523d6000602084013e620030a5565b606091505b50915050600081806020019051810190620030c1919062005b6a565b905082861015620030ec57620030d886846200612b565b620030e490826200612b565b905062003107565b620030f883876200612b565b62003104908262005dc0565b90505b6200313e8162002fe17f18160ddd0000000000000000000000000000000000000000000000000000000062002fd360058d62003a98565b5050505050505050565b620031886040518060400160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250620035ab565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c7665720000000000000000000000000000000000000000000000000000918101919091526200320b90620035ab565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c740000000000000000000000000000000000000000000000918101919091526200328e9062003b46565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051600090620032d7906200556c565b604051809103906000f080158015620032f4573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b1580156200335857600080fd5b505af11580156200336d573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062003390906200557a565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620033c4573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562003451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003477919062005ceb565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200351557600080fd5b505af11580156200352a573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b1580156200358f57600080fd5b505af1158015620035a4573d6000803e3d6000fd5b5050505050565b6040805180820190915260008082526020820152600082604051602001620035d4919062005d55565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562003659573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367f919062005ceb565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620036d6908490889060040162006141565b600060405180830381600087803b158015620036f157600080fd5b505af115801562003706573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b888860008960008060006040516024016200376d979695949392919062006165565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252620037e492918790600401620061cf565b6020604051808303816000875af115801562003804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200382a919062005ceb565b979650505050505050565b606060005b8251811015620039675760006200385382600162005dc0565b90505b8351811015620039515783818151811062003875576200387562005b3b565b6020026020010151600001516001600160a01b03168483815181106200389f576200389f62005b3b565b6020026020010151600001516001600160a01b031611156200393c576000848381518110620038d257620038d262005b3b565b60200260200101519050848281518110620038f157620038f162005b3b565b60200260200101518584815181106200390e576200390e62005b3b565b6020026020010181905250808583815181106200392f576200392f62005b3b565b6020026020010181905250505b80620039488162006069565b91505062003856565b50806200395e8162006069565b9150506200383a565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015620039ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a15919062006203565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000825b9392505050565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c17905560008262003ad1565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003ad1565b6200227a828262003b5a565b600062003b53826200402e565b5092915050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562003bcd57602002820191906000526020600020905b81548152602001906001019080831162003bb8575b5050505050905060008362003be2836200417c565b60405160200162003bf592919062005d0b565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a16835281529281209194509092909162003c6191869188910162006242565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662003c9c5762003c9a8762004229565b505b6001600160a01b0385166000908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519091839162003cf591879189910162006242565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162003d3c919062005d55565b600060405180830381855afa9150503d806000811462003d79576040519150601f19603f3d011682016040523d82523d6000602084013e62003d7e565b606091505b50915062003d9b90508162003d958860206200627e565b62004236565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003e1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e41919062005b6a565b905080821462003f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620007dd565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562003f9d57600080fd5b505af115801562003fb2573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200401a60028b01600062005588565b896004016000905550505050505050505050565b6000808260405160200162004044919062005d55565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620040c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040ec919062005ceb565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062004143908590879060040162006141565b600060405180830381600087803b1580156200415e57600080fd5b505af115801562004173573d6000803e3d6000fd5b50505050915091565b60606000825160206200419091906200627e565b67ffffffffffffffff811115620041ab57620041ab620056b0565b6040519080825280601f01601f191660200182016040528015620041d6576020820181803683370190505b50905060005b835181101562003b53576000848281518110620041fd57620041fd62005b3b565b602002602001015190508082602002602001840152508080620042209062006069565b915050620041dc565b6000620018e282620042d8565b600080600060208551116200424d57845162004250565b60205b905060005b81811015620042ce576200426b8160086200627e565b8662004278838862005dc0565b815181106200428b576200428b62005b3b565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620042c58162006069565b91505062004255565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200434a57602002820191906000526020600020905b81548152602001906001019080831162004335575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1684528252808320905195965094919350620043ae9250859187910162006242565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562004465576001600160a01b0384166000908152602087815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519092916200443591859187910162006242565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200447383620053d3565b6040516020016200448692919062005d0b565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620044f657600080fd5b505af11580156200450b573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200452c919062005d55565b600060405180830381855afa9150503d806000811462004569576040519150601f19603f3d011682016040523d82523d6000602084013e6200456e565b606091505b5091506200458b905081620045858760206200627e565b62005480565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562004606573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620046309190810190620062fa565b509050805160010362004a625760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062004688576200468862005b3b565b60200260200101516040518363ffffffff1660e01b8152600401620046c29291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620046e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004706919062005b6a565b90508062004771577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062004746576200474662005b3b565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200484e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c401620007dd565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200488692919062006242565b6040516020818303038152906040528051906020012085600081518110620048b257620048b262005b3b565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18160008151811062004924576200492462005b3b565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c168352845280822090519293909262004987918a918c910162006242565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c1685528252828420925190939162004a09918a918c910162006242565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905550620051cb565b600181511115620051405760005b8151811015620051395760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062004ac45762004ac462005b3b565b60200260200101516040518363ffffffff1660e01b815260040162004afe9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562004b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b42919062005b6a565b90508062004bac577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062004b815762004b8162005b3b565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a85858151811062004bf45762004bf462005b3b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b15801562004c8457600080fd5b505af115801562004c99573d6000803e3d6000fd5b50505050600060608a6001600160a01b03168760405162004cbb919062005d55565b600060405180830381855afa9150503d806000811462004cf8576040519150601f19603f3d011682016040523d82523d6000602084013e62004cfd565b606091505b50909250905062004d1581620045858b60206200627e565b955081801562004d4457507f133700000000000000000000000000000000000000000000000000000000000086145b156200504e577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162004d8292919062006242565b6040516020818303038152906040528051906020012088888151811062004dad5762004dad62005b3b565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a184848151811062004e1e5762004e1e62005b3b565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f168352845280822090519293909262004e81918d918f910162006242565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c60405160200162004f3892919062006242565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062004fbb5762004fbb62005b3b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200502c57600080fd5b505af115801562005041573d6000803e3d6000fd5b5050505050505062005139565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062005096576200509662005b3b565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200510757600080fd5b505af11580156200511c573d6000803e3d6000fd5b505050505050508080620051309062006069565b91505062004a70565b50620051cb565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620007dd565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620052279188918a910162006242565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620052de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620007dd565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200534260028a01600062005588565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051909291620053a09188918a910162006242565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620053e791906200627e565b67ffffffffffffffff811115620054025762005402620056b0565b6040519080825280601f01601f1916602001820160405280156200542d576020820181803683370190505b50905060005b835181101562003b5357600084828151811062005454576200545462005b3b565b602002602001015190508082602002602001840152508080620054779062006069565b91505062005433565b60008060006020855111620054975784516200549a565b60205b905060005b81811015620042ce57620054b58160086200627e565b86620054c2838862005dc0565b81518110620054d557620054d562005b3b565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200550f8162006069565b9150506200549f565b610acf806200636683390190565b61237a8062006e3583390190565b61013c80620091af83390190565b61080980620092eb83390190565b6102008062009af483390190565b6112468062009cf483390190565b610d06806200af3a83390190565b6153a2806200bc4083390190565b508054600082559060005260206000209081019062002a5a91905b80821115620055b95760008155600101620055a3565b5090565b600060208284031215620055d057600080fd5b5035919050565b60005b83811015620055f4578181015183820152602001620055da565b50506000910152565b6000815180845262005617816020860160208601620055d7565b601f01601f19169290920160200192915050565b6001600160a01b038416815282602082015260606040820152600062001b946060830184620055fd565b600081518084526020808501945080840160005b83811015620056905781516001600160a01b03168752958201959082019060010162005669565b509495945050505050565b60208152600062003ad1602083018462005655565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620057065762005706620056b0565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715620057385762005738620056b0565b604052919050565b600067ffffffffffffffff8211156200575d576200575d620056b0565b5060051b60200190565b600082601f8301126200577957600080fd5b81356020620057926200578c8362005740565b6200570c565b82815260059290921b84018101918181019086841115620057b257600080fd5b8286015b84811015620057cf5780358352918301918301620057b6565b509695505050505050565b600060208284031215620057ed57600080fd5b813567ffffffffffffffff8111156200580557600080fd5b620058138482850162005767565b949350505050565b600080604083850312156200582f57600080fd5b50508035926020909101359150565b6000806000606084860312156200585457600080fd5b83359250602084013567ffffffffffffffff8111156200587357600080fd5b620058818682870162005767565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562005970578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200595a5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005916565b50978a01979550505091870191600101620058ba565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620059f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452620059e3858351620055fd565b94509285019290850190600101620059a6565b5092979650505050505050565b6001600160a01b038116811462002a5a57600080fd5b6000806000806080858703121562005a3057600080fd5b843562005a3d8162005a03565b966020860135965060408601359560600135945092505050565b6000806040838503121562005a6b57600080fd5b823567ffffffffffffffff81111562005a8357600080fd5b62005a918582860162005767565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b8181101562005ada5783518352928401929184019160010162005abc565b50909695505050505050565b600181811c9082168062005afb57607f821691505b60208210810362005b35577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121562005b7d57600080fd5b5051919050565b60208152600062003ad16020830184620055fd565b60006001600160a01b03808816835280871660208401525084604083015260a0606083015262005bcd60a0830185620055fd565b828103608084015262005be18185620055fd565b98975050505050505050565b805162001a2f8162005a03565b805163ffffffff8116811462001a2f57600080fd5b8051801515811462001a2f57600080fd5b6000610180828403121562005c3457600080fd5b62005c3e620056df565b62005c498362005bed565b815262005c596020840162005bed565b602082015262005c6c6040840162005bed565b6040820152606083015160608201526080830151608082015262005c9360a0840162005bfa565b60a082015260c083015160c082015260e083015160e082015261010080840151818301525061012062005cc881850162005c0f565b908201526101408381015190820152610160928301519281019290925250919050565b60006020828403121562005cfe57600080fd5b815162003ad18162005a03565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162005d47816004850160208701620055d7565b919091016004019392505050565b6000825162005d69818460208701620055d7565b9190910192915050565b60006020828403121562005d8657600080fd5b62003ad18262005c0f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620018e257620018e262005d91565b60408152600062005e1460408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b60408152600062005e1460408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062005e9e60408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062005e9e60408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600062005f3160408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620058138185620055fd565b60408152600062005f3160408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6002811062005fbb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c602085015281604085015262005feb8285018d620055fd565b925062005ffc606085018c62005f83565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200604a818460208801620055d7565b83519083019062006060818360208801620055d7565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200609d576200609d62005d91565b5060010190565b60006101406001600160a01b03808e1684528c6020850152816040850152620060d08285018d620055fd565b9150620060e1606085018c62005f83565b8960808501528860a08501528760c085015280871660e0850152808616610100850152508281036101208401526200611a8185620055fd565b9d9c50505050505050505050505050565b81810381811115620018e257620018e262005d91565b6001600160a01b0383168152604060208201526000620058136040830184620055fd565b60006101008083526200617b8184018b62005655565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b0384168152606060208201526000620061f36060830185620055fd565b9050826040830152949350505050565b6000806000606084860312156200621957600080fd5b835160ff811681146200622b57600080fd5b602085015160409095015190969495509392505050565b825160009082906020808701845b838110156200626e5781518552938201939082019060010162006250565b5050948252509092019392505050565b8082028115828204841417620018e257620018e262005d91565b600082601f830112620062aa57600080fd5b81516020620062bd6200578c8362005740565b82815260059290921b84018101918181019086841115620062dd57600080fd5b8286015b84811015620057cf5780518352918301918301620062e1565b600080604083850312156200630e57600080fd5b825167ffffffffffffffff808211156200632757600080fd5b620063358683870162006298565b935060208501519150808211156200634c57600080fd5b506200635b8582860162006298565b915050925092905056fe608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033a26469706673582212200e8111dfd72c62c5518a5dc0c4e6410019e4bcba8c493a4e103d94b1a141adc764736f6c63430008130033","sourceMap":"327:3142:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;522:170;;;:::i;:::-;;595:17:106;;;;;-1:-1:-1;;;;;595:17:106;;;;;;-1:-1:-1;;;;;200:55:122;;;182:74;;170:2;155:18;595:17:106;;;;;;;;748:20:117;;;;;-1:-1:-1;;;;;748:20:117;;;1586:74:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2161:134:33:-;;;:::i;:::-;;;;;;;:::i;800:20:117:-;;;;;-1:-1:-1;;;;;800:20:117;;;1025:26:116;;;;;-1:-1:-1;;;;;1025:26:116;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;4871:25:122;;;4859:2;4844:18;987:253:45;4725:177:122;3024:158:107;;;:::i;2930:133:33:-;;;:::i;2631:141::-;;;:::i;762:788:113:-;;;;;;:::i;:::-;;:::i;1125:32:115:-;;;;;-1:-1:-1;;;;;1125:32:115;;;452:451:45;;;;;;:::i;:::-;;:::i;:::-;;;6076:14:122;;6069:22;6051:41;;6039:2;6024:18;452:451:45;5911:187:122;2447:178:33;;;:::i;:::-;;;;;;;:::i;572:17:106:-;;;;;-1:-1:-1;;;;;572:17:106;;;1232:22:115;;;;;-1:-1:-1;;;;;1232:22:115;;;2301:140:33;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;978:41:116:-;;;;;-1:-1:-1;;;;;978:41:116;;;549:17:106;;;;;-1:-1:-1;;;;;549:17:106;;;1866:141:33;;;:::i;865:21:116:-;;;;;-1:-1:-1;;;;;865:21:116;;;2744:190:107;;;:::i;1556:1508:113:-;;;;;;:::i;:::-;;:::i;1246:1168:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;892:31:116:-;;;;;-1:-1:-1;;;;;892:31:116;;;929:43;;;;;-1:-1:-1;;;;;929:43:116;;;5179:952:45;;;;;;:::i;:::-;;:::i;774:20:117:-;;;;;-1:-1:-1;;;;;774:20:117;;;407:409:44;;;;;;:::i;:::-;;:::i;1057:36:116:-;;;;;-1:-1:-1;;;;;1057:36:116;;;2013:142:33;;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;1572:26:26:-;;;;;;;;;1100:19:115;;;;;-1:-1:-1;;;;;1100:19:115;;;522:170:113;596:13;:11;:13::i;:::-;660:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;654:3:113;:31;;;;-1:-1:-1;;;;;654:31:113;;;;;;;;;;522:170::o;1586:74:107:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2161:134:33:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:33;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;987:253:45:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;13133:2:122;1067:63:45;;;13115:21:122;13172:2;13152:18;;;13145:30;13211:34;13191:18;;;13184:62;13282:5;13262:18;;;13255:33;13305:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:107:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:107;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:107;-1:-1:-1;;;;;3146:26:107;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;:::-;3024:158::o;2930:133:33:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:33;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:33;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;762:788:113:-;951:37;;;;;961:26;;;951:37;;;6051:41:122;951:9:113;;;;6024:18:122;;951:37:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:33;1035:10;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3196:264:113;;;;;;;;3246:6;;-1:-1:-1;;;;;3246:6:113;;;3196:264;;3276:6;;;3196:264;;;;-1:-1:-1;3196:264:113;;;;;;;3353:10;3196:264;;;;3388:6;3196:264;;;;3417:32;3196:264;;;;;3103:364;1035:10;1055:11;;;:23;;;1137:11;;1159:5;;999:46;;-1:-1:-1;1124:58:113;;-1:-1:-1;;;;;1159:5:113;1167:14;1124:4;:58::i;:::-;1402:20;;;;;;;;;;;;;;;;1301:135;;1272:15;;;;1341:43;;1301:135;;;;;:::i;:::-;;;;-1:-1:-1;;1301:135:113;;;;;;;;;;;;;;;;;;;;;;;1272:174;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1456:3:113;;1486:5;;1518:13;;-1:-1:-1;;;;;1456:3:113;;;;-1:-1:-1;1456:21:113;;-1:-1:-1;1486:5:113;;;1456:3;;;;1518:13;;1529:1;;1518:13;;14297:4:122;14339:3;14328:9;14324:19;14316:27;;-1:-1:-1;;;;;14450:2:122;14441:6;14435:13;14431:22;14420:9;14413:41;14522:2;14514:4;14506:6;14502:17;14496:24;14492:33;14485:4;14474:9;14470:20;14463:63;14594:2;14586:4;14578:6;14574:17;14568:24;14564:33;14557:4;14546:9;14542:20;14535:63;;14666:10;14658:4;14650:6;14646:17;14640:24;14636:41;14629:4;14618:9;14614:20;14607:71;14734:4;14726:6;14722:17;14716:24;14709:4;14698:9;14694:20;14687:54;14797:4;14789:6;14785:17;14779:24;14772:4;14761:9;14757:20;14750:54;14159:651;;;;;1518:13:113;;;;-1:-1:-1;;1518:13:113;;;;;;;1533:9;;;;-1:-1:-1;1533:9:113;;1456:87;;;;;;;;;;;;;;;1518:13;1456:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;869:681;762:788;;:::o;452:451:45:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;;452:451;-1:-1:-1;;;452:451:45:o;2447:178:33:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:107;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:107;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;17357:55:122;;;2840:61:107;;;17339:74:122;17429:18;;;17422:34;17312:18;;2840:61:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:107;2823:8;:104::i;1556:1508:113:-;1719:24;;;;;1729:13;;;1719:24;;;6051:41:122;1719:9:113;;;;6024:18:122;;1719:24:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1753:38:113;;;;;1763:27;;;;1753:38;;;6051:41:122;1753:9:113;;-1:-1:-1;1753:9:113;;-1:-1:-1;6024:18:122;;1753:38:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1852:19:113;;;;;1860:10;1852:19;;;4871:25:122;1852:7:113;;-1:-1:-1;1852:7:113;;-1:-1:-1;4844:18:122;;1852:19:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1921:240:113;;;;;;;;1971:6;;-1:-1:-1;;;;;1971:6:113;;;1921:240;;;2001:6;;;;1921:240;;;;;;;;;;;;;;2076:10;1921:240;;;;;;;;;;;;;;;;2241:5;;1921:240;;-1:-1:-1;2211:53:113;;-1:-1:-1;2241:5:113;2249:14;2211:4;:53::i;:::-;2351:3;;2381:5;;2413:16;;;14435:13:122;;-1:-1:-1;;;;;14431:22:122;;;2413:16:113;;;;14413:41:122;;;;14502:17;;14496:24;14492:33;;14470:20;;;14463:63;14574:17;;;14568:24;14564:33;;14542:20;;;;14535:63;;;;14646:17;;14640:24;14666:10;14636:41;14614:20;;;;14607:71;;;;14722:17;;14716:24;14694:20;;;;14687:54;;;;14785:17;;14779:24;14339:3;14757:20;;14750:54;2309:27:113;;2351:3;;;:21;;2381:5;;2309:27;;;;14324:19:122;;2413:16:113;;;-1:-1:-1;;2413:16:113;;;;;;;2431:9;;;;-1:-1:-1;2431:9:113;;2351:90;;;;;;;;;;;;;;;2413:16;2351:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2470:15;;2496:6;;2309:132;;-1:-1:-1;2453:51:113;;-1:-1:-1;;;;;2496:6:113;2453:8;:51::i;:::-;2531:14;;;;2556:6;;2514:50;;2531:14;-1:-1:-1;;;;;2556:6:113;2514:8;:50::i;:::-;2574:42;2583:5;:16;;;2601:14;2574:8;:42::i;:::-;2626:28;2635:5;:15;;;2652:1;2626:8;:28::i;:::-;2664:34;2673:5;:14;;;2689:8;2664;:34::i;:::-;2708:35;2717:5;:13;;;2708:35;;2732:10;2708:8;:35::i;:::-;2753:32;2762:5;:13;;;2777:7;2753:8;:32::i;:::-;2795:28;2804:5;:15;;;2821:1;2795:8;:28::i;:::-;2833:41;2842:5;:10;;;2854:19;2833:8;:41::i;:::-;2884:40;2893:5;:23;;;2918:5;2884:8;:40::i;:::-;2934:57;2943:5;:22;;;2967:23;2934:8;:57::i;:::-;3001:56;3010:5;:21;;;3033:23;3001:8;:56::i;:::-;1709:1355;;1556:1508;;;;:::o;1246:1168:45:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;18156:2:122;1350:64:45;;;18138:21:122;18195:2;18175:18;;;18168:30;18234:34;18214:18;;;18207:62;18305:6;18285:18;;;18278:34;18329:19;;1350:64:45;17954:400:122;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;17339:74:122;;;2221:17:26;17429:18:122;;;17422:34;2196:43:26;;;;;;;;;17312:18:122;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;5179:952:45:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;2013:142:33:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:33;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;1667:955:107:-;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:107;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;200:55:122;;;182:74;;170:2;155:18;1819:38:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:107;:54;;;;-1:-1:-1;;;;;1803:54:107;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:107;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;20277:25:122;;;;-1:-1:-1;;;;;2216:13:107;20318:18:122;;;20311:83;20250:18;;2101:143:107;;;-1:-1:-1;;2101:143:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:107;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:107;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:107;:48;;;;-1:-1:-1;;;;;2366:48:107;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:107;:49;;;;-1:-1:-1;;;;;2478:49:107;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:107;:37;;;;-1:-1:-1;;;;;2537:37:107;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;200:55:122;;;182:74;;170:2;155:18;2592:23:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:107;:30;;;;-1:-1:-1;;;;;2585:30:107;;;;;;;;;;1667:955::o;2493:990:45:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;20861:2:122;20843:21;;;20900:2;20880:18;;;20873:30;20939:34;20934:2;20919:18;;20912:62;21010:7;21005:2;20990:18;;20983:35;21050:3;21035:19;;20659:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;:::-;;;;;;;;4349:6;:4;:6::i;:::-;4095:277;;:::o;20040:117:31:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;:::-;20040:117;;;:::o;3622:277:26:-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;22301:2:122;22283:21;;;22340:2;22320:18;;;22313:30;22379:34;22374:2;22359:18;;22352:62;22450:7;22445:2;22430:18;;22423:35;22490:3;22475:19;;22099:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;23511:2:122;23493:21;;;23550:2;23530:18;;;23523:30;23589:34;23584:2;23569:18;;23562:62;23660:4;23655:2;23640:18;;23633:32;23697:3;23682:19;;23309:398;5293:41:26;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;789:312:29:-;859:1;854:6;;:1;:6;;;850:245;;881:41;;;;;24620:2:122;24602:21;;;24659:2;24639:18;;;24632:30;24698:34;24693:2;24678:18;;24671:62;24769:4;24764:2;24749:18;;24742:32;24806:3;24791:19;;24418:398;881:41:29;;;;;;;;941:52;972:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:52;;;;;;:::i;:::-;;;;;;;;1012;1043:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1012:52;;;;;;:::i;619:1105:106:-;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:106;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:106;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:106;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:106;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:106;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:106;;1223:9;;-1:-1:-1;1235:10:106;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:106;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:106;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:106;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:106;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:106;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:106;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:106;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;:::-;673:1051;619:1105::o;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:106;;;;;;;;;;;;-1:-1:-1;;1875:19:106;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:106;;;;;;;;;:11;;;;-1:-1:-1;1875:19:106;:11;;-1:-1:-1;;1875:11:106;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:106;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:119:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:119;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:119;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:119;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2224:661;;;2031:854;;;;;;:::o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;29267:74:122;;;2677:17:26;29357:18:122;;;29350:34;;;;2712:4:26;29400:18:122;;;29393:34;2489:11:26;;1671:64;2586:43;;29240:18:122;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;20436:825:31:-;20600:38;;;-1:-1:-1;;;;;200:55:122;;;20600:38:31;;;;182:74:122;;;;20600:38:31;;;;;;;;;;155:18:122;;;;20600:38:31;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:31;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:31;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;:60::-;20859:396;;20521:740;;20436:825;;;;:::o;1332:965:115:-;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:115;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:115;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:115;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:115;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:115;;;1863:39;;;182:74:122;1780:73:115;;-1:-1:-1;1863:27:115;;;;;155:18:122;;1863:39:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:115;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:115;;;;-1:-1:-1;2012:36:115;;;:::i;:::-;-1:-1:-1;;;;;29875:15:122;;;29857:34;;29927:15;;29922:2;29907:18;;29900:43;29784:2;29769:18;2012:36:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:115;:49;;;;-1:-1:-1;;;;;1999:49:115;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:115;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;182:74:122;2228:8:115;;;;155:18:122;;2228:20:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:115;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:115;;;2258:32;;;182:74:122;2258:19:115;;;;-1:-1:-1;2258:19:115;;-1:-1:-1;155:18:122;;2258:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:933;1332:965::o;373:261:120:-;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:120;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:120;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;4871:25:122;;;489:33:120;-1:-1:-1;481:42:120;;206;;548:7;;4844:18:122;;548:11:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:120;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:120;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;953:558:119:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:119;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:119;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;1297:495:120:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:120;;;;:::i;:::-;;;;1405:356;;;-1:-1:-1;1777:8:120;;1297:495;-1:-1:-1;1297:495:120:o;829:297::-;980:10;;;;972:25;;;;;;;;33047::122;;;;33088:18;;;33081:34;;;914:12:120;;939:7;;;;;;206:42;;972:7;;33020:18:122;;972:25:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:120;;-1:-1:-1;938:59:120;-1:-1:-1;1008:22:120;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:120;;;;;;33707:19:122;;;;33742:12;;;33735:28;;;;-1:-1:-1;;;33801:3:122;33797:16;;;;33815:66;33793:89;33779:12;;;33772:111;1068:25:120;;;;;;;;;33899:12:122;;;;1068:25:120;;;;;-1:-1:-1;;;829:297:120:o;7700:156:36:-;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:36;;;;;-1:-1:-1;4573:12:36;7813:36;7806:43;7700:156;-1:-1:-1;;;7700:156:36:o;7862:143::-;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:36;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:36;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9023:13;:33::i;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;:::-;-1:-1:-1;15402:30:31;15314:125;-1:-1:-1;;15314:125:31:o;9297:1095:36:-;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:36;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:36;;;;;;;;;-1:-1:-1;;;;;9604:15:36;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:36;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:36;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:36;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:36;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:36;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:36;-1:-1:-1;9922:38:36;;-1:-1:-1;9857:44:36;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;17357:55:122;;9995:18:36;;;17339:74:122;17429:18;;;17422:34;;;9915:45:36;;-1:-1:-1;9980:12:36;;-1:-1:-1;9995:7:36;;;;17312:18:122;;9995::36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;34912:2:122;10056:175:36;;;34894:21:122;34951:3;34931:18;;;34924:31;34991:34;34971:18;;;34964:62;35062:34;35042:18;;;35035:62;35134:34;35113:19;;;35106:63;35206:17;35185:19;;;35178:46;35241:19;;10056:175:36;34710:556:122;10056:175:36;10251:24;;;;;-1:-1:-1;;;;;29285:55:122;;10251:24:36;;;29267:74:122;29357:18;;;29350:34;;;29400:18;;;29393:34;;;10251:8:36;;;;29240:18:122;;10251:24:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:36;;;10285:19;;;;;;-1:-1:-1;10321:9:36;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:36;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;15033:242:31:-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:31;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;4871:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;4844:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;11471:393:36:-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:36;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:36;;11110:304;-1:-1:-1;;;;11110:304:36:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:36;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:36;:15;;-1:-1:-1;1568:34:36;;-1:-1:-1;1452:33:36;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:36;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:36;;;;1532:174;;;-1:-1:-1;;;;;1627:15:36;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:36;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:36;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:36;-1:-1:-1;1903:38:36;;-1:-1:-1;1838:44:36;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;200:55:122;;1990:25:36;;;182:74:122;1896:45:36;;-1:-1:-1;1963:22:36;;-1:-1:-1;1990:11:36;;;;155:18:122;;1990:25:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:36;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:36;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;17357:55:122;;;;17339:74;;17444:2;17429:18;;17422:34;17327:2;17312:18;;17143:319;2077:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:36;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;17357:55:122;;;17339:74;;17429:18;;;17422:34;17312:18;2160:44:36;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;34912:2:122;2268:187:36;;;34894:21:122;34951:3;34931:18;;;34924:31;34991:34;34971:18;;;34964:62;35062:34;35042:18;;;35035:62;35134:34;35113:19;;;35106:63;35206:17;35185:19;;;35178:46;35241:19;;2268:187:36;34710:556:122;2268:187:36;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;37103:55:122;;;37085:74;;37207:66;37195:79;;;37175:18;;;37168:107;;;;37291:18;;;37284:34;37349:2;37334:18;;37327:34;37072:3;37057:19;2488:86:36;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:36;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:36;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:36;;;:88;;;;-1:-1:-1;;;;;2690:15:36;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:36;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:36;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:36;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:36;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:36;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;17357:55:122;;;;17339:74;;17444:2;17429:18;;17422:34;17327:2;17312:18;;17143:319;2894:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:36;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;17357:55:122;;;17339:74;;17429:18;;;17422:34;17312:18;2985:44:36;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:36;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;29285:55:122;;;3090:43:36;;;29267:74:122;29357:18;;;29350:34;3114:18:36;29400::122;;;29393:34;29240:18;;3090:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:36;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:36;;-1:-1:-1;3238:38:36;-1:-1:-1;3305:38:36;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;37103:55:122;;;37085:74;;37207:66;37195:79;;;37175:18;;;37168:107;;;;37291:18;;;37284:34;37349:2;37334:18;;37327:34;37072:3;37057:19;3519:86:36;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:36;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:36;-1:-1:-1;;;;;3737:15:36;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:36;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;29285:55:122;;;3834:29:36;;;29267:74:122;29357:18;;;29350:34;29400:18;;;29393:34;;;29240:18;;3834:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:36;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;29285:55:122;;;3926:29:36;;;29267:74:122;29357:18;;;29350:34;29400:18;;;29393:34;;;29240:18;;3926:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;37574:2:122;4000:74:36;;;37556:21:122;37593:18;;;37586:30;;;;37652:34;37632:18;;;37625:62;37723:34;37703:18;;;37696:62;37775:19;;4000:74:36;37372:428:122;2782:1303:36;-1:-1:-1;;;;;4116:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:36;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:36;;;;4095:162;;;;;;;38007:2:122;4095:162:36;;;37989:21:122;38046:2;38026:18;;;38019:30;38085:34;38065:18;;;38058:62;38156:17;38136:18;;;38129:45;38191:19;;4095:162:36;37805:411:122;4095:162:36;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:36;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:36;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:36;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;513:180:122:-;572:6;625:2;613:9;604:7;600:23;596:32;593:52;;;641:1;638;631:12;593:52;-1:-1:-1;664:23:122;;513:180;-1:-1:-1;513:180:122:o;698:250::-;783:1;793:113;807:6;804:1;801:13;793:113;;;883:11;;;877:18;864:11;;;857:39;829:2;822:10;793:113;;;-1:-1:-1;;940:1:122;922:16;;915:27;698:250::o;953:329::-;994:3;1032:5;1026:12;1059:6;1054:3;1047:19;1075:76;1144:6;1137:4;1132:3;1128:14;1121:4;1114:5;1110:16;1075:76;:::i;:::-;1196:2;1184:15;-1:-1:-1;;1180:88:122;1171:98;;;;1271:4;1167:109;;953:329;-1:-1:-1;;953:329:122:o;1287:435::-;-1:-1:-1;;;;;1521:6:122;1517:55;1506:9;1499:74;1609:6;1604:2;1593:9;1589:18;1582:34;1652:2;1647;1636:9;1632:18;1625:30;1480:4;1672:44;1712:2;1701:9;1697:18;1689:6;1672:44;:::i;1727:484::-;1780:3;1818:5;1812:12;1845:6;1840:3;1833:19;1871:4;1900:2;1895:3;1891:12;1884:19;;1937:2;1930:5;1926:14;1958:1;1968:218;1982:6;1979:1;1976:13;1968:218;;;2047:13;;-1:-1:-1;;;;;2043:62:122;2031:75;;2126:12;;;;2161:15;;;;2004:1;1997:9;1968:218;;;-1:-1:-1;2202:3:122;;1727:484;-1:-1:-1;;;;;1727:484:122:o;2216:261::-;2395:2;2384:9;2377:21;2358:4;2415:56;2467:2;2456:9;2452:18;2444:6;2415:56;:::i;2732:184::-;2784:77;2781:1;2774:88;2881:4;2878:1;2871:15;2905:4;2902:1;2895:15;2921:252;2993:2;2987:9;3035:3;3023:16;;3069:18;3054:34;;3090:22;;;3051:62;3048:88;;;3116:18;;:::i;:::-;3152:2;3145:22;2921:252;:::o;3178:334::-;3249:2;3243:9;3305:2;3295:13;;-1:-1:-1;;3291:86:122;3279:99;;3408:18;3393:34;;3429:22;;;3390:62;3387:88;;;3455:18;;:::i;:::-;3491:2;3484:22;3178:334;;-1:-1:-1;3178:334:122:o;3517:183::-;3577:4;3610:18;3602:6;3599:30;3596:56;;;3632:18;;:::i;:::-;-1:-1:-1;3677:1:122;3673:14;3689:4;3669:25;;3517:183::o;3705:662::-;3759:5;3812:3;3805:4;3797:6;3793:17;3789:27;3779:55;;3830:1;3827;3820:12;3779:55;3866:6;3853:20;3892:4;3916:60;3932:43;3972:2;3932:43;:::i;:::-;3916:60;:::i;:::-;4010:15;;;4096:1;4092:10;;;;4080:23;;4076:32;;;4041:12;;;;4120:15;;;4117:35;;;4148:1;4145;4138:12;4117:35;4184:2;4176:6;4172:15;4196:142;4212:6;4207:3;4204:15;4196:142;;;4278:17;;4266:30;;4316:12;;;;4229;;4196:142;;;-1:-1:-1;4356:5:122;3705:662;-1:-1:-1;;;;;;3705:662:122:o;4372:348::-;4456:6;4509:2;4497:9;4488:7;4484:23;4480:32;4477:52;;;4525:1;4522;4515:12;4477:52;4565:9;4552:23;4598:18;4590:6;4587:30;4584:50;;;4630:1;4627;4620:12;4584:50;4653:61;4706:7;4697:6;4686:9;4682:22;4653:61;:::i;:::-;4643:71;4372:348;-1:-1:-1;;;;4372:348:122:o;4907:248::-;4975:6;4983;5036:2;5024:9;5015:7;5011:23;5007:32;5004:52;;;5052:1;5049;5042:12;5004:52;-1:-1:-1;;5075:23:122;;;5145:2;5130:18;;;5117:32;;-1:-1:-1;4907:248:122:o;5422:484::-;5524:6;5532;5540;5593:2;5581:9;5572:7;5568:23;5564:32;5561:52;;;5609:1;5606;5599:12;5561:52;5645:9;5632:23;5622:33;;5706:2;5695:9;5691:18;5678:32;5733:18;5725:6;5722:30;5719:50;;;5765:1;5762;5755:12;5719:50;5788:61;5841:7;5832:6;5821:9;5817:22;5788:61;:::i;:::-;5778:71;;;5896:2;5885:9;5881:18;5868:32;5858:42;;5422:484;;;;;:::o;6103:1697::-;6307:4;6336:2;6376;6365:9;6361:18;6406:2;6395:9;6388:21;6429:6;6464;6458:13;6495:6;6487;6480:22;6521:2;6511:12;;6554:2;6543:9;6539:18;6532:25;;6616:2;6606:6;6603:1;6599:14;6588:9;6584:30;6580:39;6654:2;6646:6;6642:15;6675:1;6696;6706:1065;6722:6;6717:3;6714:15;6706:1065;;;6791:22;;;6815:66;6787:95;6775:108;;6906:13;;6993:9;;-1:-1:-1;;;;;6989:58:122;6974:74;;7087:11;;7081:18;7119:15;;;7112:27;;;7200:19;;6946:15;;;7232:24;;;7322:21;;;;7367:1;;7290:2;7278:15;;;7381:282;7397:8;7392:3;7389:17;7381:282;;;7478:15;;7495:66;7474:88;7460:103;;7632:17;;;;7425:1;7416:11;;;;;7589:14;;;;7381:282;;;-1:-1:-1;7749:12:122;;;;7686:5;-1:-1:-1;;;7714:15:122;;;;6748:1;6739:11;6706:1065;;;-1:-1:-1;7788:6:122;;6103:1697;-1:-1:-1;;;;;;;;;6103:1697:122:o;8036:861::-;8198:4;8227:2;8267;8256:9;8252:18;8297:2;8286:9;8279:21;8320:6;8355;8349:13;8386:6;8378;8371:22;8424:2;8413:9;8409:18;8402:25;;8486:2;8476:6;8473:1;8469:14;8458:9;8454:30;8450:39;8436:53;;8524:2;8516:6;8512:15;8545:1;8555:313;8569:6;8566:1;8563:13;8555:313;;;8658:66;8646:9;8638:6;8634:22;8630:95;8625:3;8618:108;8749:39;8781:6;8772;8766:13;8749:39;:::i;:::-;8739:49;-1:-1:-1;8846:12:122;;;;8811:15;;;;8591:1;8584:9;8555:313;;;-1:-1:-1;8885:6:122;;8036:861;-1:-1:-1;;;;;;;8036:861:122:o;9168:154::-;-1:-1:-1;;;;;9247:5:122;9243:54;9236:5;9233:65;9223:93;;9312:1;9309;9302:12;9327:452;9413:6;9421;9429;9437;9490:3;9478:9;9469:7;9465:23;9461:33;9458:53;;;9507:1;9504;9497:12;9458:53;9546:9;9533:23;9565:31;9590:5;9565:31;:::i;:::-;9615:5;9667:2;9652:18;;9639:32;;-1:-1:-1;9718:2:122;9703:18;;9690:32;;9769:2;9754:18;9741:32;;-1:-1:-1;9327:452:122;-1:-1:-1;;;9327:452:122:o;9784:416::-;9877:6;9885;9938:2;9926:9;9917:7;9913:23;9909:32;9906:52;;;9954:1;9951;9944:12;9906:52;9994:9;9981:23;10027:18;10019:6;10016:30;10013:50;;;10059:1;10056;10049:12;10013:50;10082:61;10135:7;10126:6;10115:9;10111:22;10082:61;:::i;:::-;10072:71;10190:2;10175:18;;;;10162:32;;-1:-1:-1;;;;9784:416:122:o;10205:632::-;10376:2;10428:21;;;10498:13;;10401:18;;;10520:22;;;10347:4;;10376:2;10599:15;;;;10573:2;10558:18;;;10347:4;10642:169;10656:6;10653:1;10650:13;10642:169;;;10717:13;;10705:26;;10786:15;;;;10751:12;;;;10678:1;10671:9;10642:169;;;-1:-1:-1;10828:3:122;;10205:632;-1:-1:-1;;;;;;10205:632:122:o;12489:437::-;12568:1;12564:12;;;;12611;;;12632:61;;12686:4;12678:6;12674:17;12664:27;;12632:61;12739:2;12731:6;12728:14;12708:18;12705:38;12702:218;;12776:77;12773:1;12766:88;12877:4;12874:1;12867:15;12905:4;12902:1;12895:15;12702:218;;12489:437;;;:::o;13335:184::-;13387:77;13384:1;13377:88;13484:4;13481:1;13474:15;13508:4;13505:1;13498:15;13524:184;13594:6;13647:2;13635:9;13626:7;13622:23;13618:32;13615:52;;;13663:1;13660;13653:12;13615:52;-1:-1:-1;13686:16:122;;13524:184;-1:-1:-1;13524:184:122:o;13713:219::-;13862:2;13851:9;13844:21;13825:4;13882:44;13922:2;13911:9;13907:18;13899:6;13882:44;:::i;14815:672::-;15055:4;-1:-1:-1;;;;;15165:2:122;15157:6;15153:15;15142:9;15135:34;15217:2;15209:6;15205:15;15200:2;15189:9;15185:18;15178:43;;15257:6;15252:2;15241:9;15237:18;15230:34;15300:3;15295:2;15284:9;15280:18;15273:31;15327:45;15367:3;15356:9;15352:19;15344:6;15327:45;:::i;:::-;15421:9;15413:6;15409:22;15403:3;15392:9;15388:19;15381:51;15449:32;15474:6;15466;15449:32;:::i;:::-;15441:40;14815:672;-1:-1:-1;;;;;;;;14815:672:122:o;15492:146::-;15579:13;;15601:31;15579:13;15601:31;:::i;15643:167::-;15721:13;;15774:10;15763:22;;15753:33;;15743:61;;15800:1;15797;15790:12;15815:164;15891:13;;15940;;15933:21;15923:32;;15913:60;;15969:1;15966;15959:12;15984:1154;16076:6;16129:3;16117:9;16108:7;16104:23;16100:33;16097:53;;;16146:1;16143;16136:12;16097:53;16172:22;;:::i;:::-;16217:48;16255:9;16217:48;:::i;:::-;16210:5;16203:63;16298:57;16351:2;16340:9;16336:18;16298:57;:::i;:::-;16293:2;16286:5;16282:14;16275:81;16388:57;16441:2;16430:9;16426:18;16388:57;:::i;:::-;16383:2;16376:5;16372:14;16365:81;16499:2;16488:9;16484:18;16478:25;16473:2;16466:5;16462:14;16455:49;16558:3;16547:9;16543:19;16537:26;16531:3;16524:5;16520:15;16513:51;16597:49;16641:3;16630:9;16626:19;16597:49;:::i;:::-;16591:3;16584:5;16580:15;16573:74;16701:3;16690:9;16686:19;16680:26;16674:3;16667:5;16663:15;16656:51;16761:3;16750:9;16746:19;16740:26;16734:3;16727:5;16723:15;16716:51;16786:3;16842:2;16831:9;16827:18;16821:25;16816:2;16809:5;16805:14;16798:49;;16866:3;16901:46;16943:2;16932:9;16928:18;16901:46;:::i;:::-;16885:14;;;16878:70;16967:3;17008:18;;;17002:25;16986:14;;;16979:49;17047:3;17088:18;;;17082:25;17066:14;;;17059:49;;;;-1:-1:-1;16889:5:122;15984:1154;-1:-1:-1;15984:1154:122:o;17467:283::-;17569:6;17622:2;17610:9;17601:7;17597:23;17593:32;17590:52;;;17638:1;17635;17628:12;17590:52;17670:9;17664:16;17689:31;17714:5;17689:31;:::i;18850:430::-;19047:66;19039:6;19035:79;19030:3;19023:92;19005:3;19144:6;19138:13;19160:74;19227:6;19223:1;19218:3;19214:11;19207:4;19199:6;19195:17;19160:74;:::i;:::-;19254:16;;;;19272:1;19250:24;;18850:430;-1:-1:-1;;;18850:430:122:o;19285:287::-;19414:3;19452:6;19446:13;19468:66;19527:6;19522:3;19515:4;19507:6;19503:17;19468:66;:::i;:::-;19550:16;;;;;19285:287;-1:-1:-1;;19285:287:122:o;19577:202::-;19644:6;19697:2;19685:9;19676:7;19672:23;19668:32;19665:52;;;19713:1;19710;19703:12;19665:52;19736:37;19763:9;19736:37;:::i;19784:184::-;19836:77;19833:1;19826:88;19933:4;19930:1;19923:15;19957:4;19954:1;19947:15;19973:125;20038:9;;;20059:10;;;20056:36;;;20072:18;;:::i;21229:348::-;21459:2;21448:9;21441:21;21422:4;21479:49;21524:2;21513:9;21509:18;21142:2;21130:15;;21177:12;21170:4;21161:14;;21154:36;21215:2;21206:12;;21065:159;21479:49;21471:57;;21564:6;21559:2;21548:9;21544:18;21537:34;21229:348;;;;:::o;21746:::-;21976:2;21965:9;21958:21;21939:4;21996:49;22041:2;22030:9;22026:18;21659:2;21647:15;;21694:12;21687:4;21678:14;;21671:36;21732:2;21723:12;;21582:159;22505:397;22735:2;22724:9;22717:21;22698:4;22755:49;22800:2;22789:9;22785:18;21142:2;21130:15;;21177:12;21170:4;21161:14;;21154:36;21215:2;21206:12;;21065:159;22755:49;22747:57;;-1:-1:-1;;;;;22844:6:122;22840:55;22835:2;22824:9;22820:18;22813:83;22505:397;;;;:::o;22907:::-;23137:2;23126:9;23119:21;23100:4;23157:49;23202:2;23191:9;23187:18;21659:2;21647:15;;21694:12;21687:4;21678:14;;21671:36;21732:2;21723:12;;21582:159;24821:439;25071:2;25060:9;25053:21;25034:4;25097:49;25142:2;25131:9;25127:18;21142:2;21130:15;;21177:12;21170:4;21161:14;;21154:36;21215:2;21206:12;;21065:159;25097:49;25194:9;25186:6;25182:22;25177:2;25166:9;25162:18;25155:50;25222:32;25247:6;25239;25222:32;:::i;25265:439::-;25515:2;25504:9;25497:21;25478:4;25541:49;25586:2;25575:9;25571:18;21659:2;21647:15;;21694:12;21687:4;21678:14;;21671:36;21732:2;21723:12;;21582:159;25898:294;25979:1;25972:5;25969:12;25959:200;;26015:77;26012:1;26005:88;26116:4;26113:1;26106:15;26144:4;26141:1;26134:15;25959:200;26168:18;;25898:294::o;26197:1028::-;26596:4;26625:3;-1:-1:-1;;;;;26728:2:122;26720:6;26716:15;26705:9;26698:34;26768:6;26763:2;26752:9;26748:18;26741:34;26811:2;26806;26795:9;26791:18;26784:30;26831:44;26871:2;26860:9;26856:18;26848:6;26831:44;:::i;:::-;26823:52;;26884:53;26933:2;26922:9;26918:18;26910:6;26884:53;:::i;:::-;26968:3;26953:19;;26946:35;;;;-1:-1:-1;27012:3:122;26997:19;;26990:35;;;;27056:3;27041:19;;27034:35;;;;27106:15;;;27100:3;27085:19;;27078:44;27159:15;;;27153:3;27138:19;;27131:44;27206:3;27191:19;27184:35;;;;26197:1028;;-1:-1:-1;;;;26197:1028:122:o;27230:492::-;27405:3;27443:6;27437:13;27459:66;27518:6;27513:3;27506:4;27498:6;27494:17;27459:66;:::i;:::-;27588:13;;27547:16;;;;27610:70;27588:13;27547:16;27657:4;27645:17;;27610:70;:::i;:::-;27696:20;;27230:492;-1:-1:-1;;;;27230:492:122:o;27727:195::-;27766:3;27797:66;27790:5;27787:77;27784:103;;27867:18;;:::i;:::-;-1:-1:-1;27914:1:122;27903:13;;27727:195::o;27927:1133::-;28360:4;28389:3;-1:-1:-1;;;;;28492:2:122;28484:6;28480:15;28469:9;28462:34;28532:6;28527:2;28516:9;28512:18;28505:34;28575:2;28570;28559:9;28555:18;28548:30;28601:44;28641:2;28630:9;28626:18;28618:6;28601:44;:::i;:::-;28587:58;;28654:53;28703:2;28692:9;28688:18;28680:6;28654:53;:::i;:::-;28744:6;28738:3;28727:9;28723:19;28716:35;28788:6;28782:3;28771:9;28767:19;28760:35;28832:6;28826:3;28815:9;28811:19;28804:35;28888:2;28880:6;28876:15;28870:3;28859:9;28855:19;28848:44;28941:2;28933:6;28929:15;28923:3;28912:9;28908:19;28901:44;;28994:9;28986:6;28982:22;28976:3;28965:9;28961:19;28954:51;29022:32;29047:6;29039;29022:32;:::i;:::-;29014:40;27927:1133;-1:-1:-1;;;;;;;;;;;;;27927:1133:122:o;29438:128::-;29505:9;;;29526:11;;;29523:37;;;29540:18;;:::i;30785:339::-;-1:-1:-1;;;;;30966:6:122;30962:55;30951:9;30944:74;31054:2;31049;31038:9;31034:18;31027:30;30925:4;31074:44;31114:2;31103:9;31099:18;31091:6;31074:44;:::i;31129:1051::-;31546:4;31575:3;31605:2;31594:9;31587:21;31631:56;31683:2;31672:9;31668:18;31660:6;31631:56;:::i;:::-;31718:2;31703:18;;;31696:34;;;;-1:-1:-1;;;;;31827:15:122;;;31822:2;31807:18;;31800:43;31879:22;;;31874:2;31859:18;;31852:50;-1:-1:-1;31911:17:122;;31997:15;;;31991:3;31976:19;;31969:44;-1:-1:-1;;32050:15:122;;;32044:3;32029:19;;32022:44;32115:4;32103:17;;;;32097:3;32082:19;;32075:46;32158:15;;;32152:3;32137:19;;;32130:44;;;;31945:15;;31129:1051;-1:-1:-1;31129:1051:122:o;32185:408::-;-1:-1:-1;;;;;32392:6:122;32388:55;32377:9;32370:74;32480:2;32475;32464:9;32460:18;32453:30;32351:4;32500:44;32540:2;32529:9;32525:18;32517:6;32500:44;:::i;:::-;32492:52;;32580:6;32575:2;32564:9;32560:18;32553:34;32185:408;;;;;;:::o;33126:395::-;33212:6;33220;33228;33281:2;33269:9;33260:7;33256:23;33252:32;33249:52;;;33297:1;33294;33287:12;33249:52;33329:9;33323:16;33379:4;33372:5;33368:16;33361:5;33358:27;33348:55;;33399:1;33396;33389:12;33348:55;33467:2;33452:18;;33446:25;33511:2;33496:18;;;33490:25;33422:5;;33446:25;;-1:-1:-1;33490:25:122;33126:395;-1:-1:-1;;;33126:395:122:o;33922:610::-;34168:13;;34111:3;;34142;;34221:4;34248:15;;;34111:3;34291:175;34305:6;34302:1;34299:13;34291:175;;;34368:13;;34354:28;;34404:14;;;;34441:15;;;;34327:1;34320:9;34291:175;;;-1:-1:-1;;34475:21:122;;;-1:-1:-1;34512:14:122;;;;;-1:-1:-1;;;33922:610:122:o;34537:168::-;34610:9;;;34641;;34658:15;;;34652:22;;34638:37;34628:71;;34679:18;;:::i;35271:659::-;35336:5;35389:3;35382:4;35374:6;35370:17;35366:27;35356:55;;35407:1;35404;35397:12;35356:55;35436:6;35430:13;35462:4;35486:60;35502:43;35542:2;35502:43;:::i;35486:60::-;35580:15;;;35666:1;35662:10;;;;35650:23;;35646:32;;;35611:12;;;;35690:15;;;35687:35;;;35718:1;35715;35708:12;35687:35;35754:2;35746:6;35742:15;35766:135;35782:6;35777:3;35774:15;35766:135;;;35848:10;;35836:23;;35879:12;;;;35799;;35766:135;;35935:614;36064:6;36072;36125:2;36113:9;36104:7;36100:23;36096:32;36093:52;;;36141:1;36138;36131:12;36093:52;36174:9;36168:16;36203:18;36244:2;36236:6;36233:14;36230:34;;;36260:1;36257;36250:12;36230:34;36283:72;36347:7;36338:6;36327:9;36323:22;36283:72;:::i;:::-;36273:82;;36401:2;36390:9;36386:18;36380:25;36364:41;;36430:2;36420:8;36417:16;36414:36;;;36446:1;36443;36436:12;36414:36;;36469:74;36535:7;36524:8;36513:9;36509:24;36469:74;:::i;:::-;36459:84;;;35935:614;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_BalanceMet_fuzz(address,uint256,bytes32,uint256)":"b785ce2a","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","test_getTradeableOrder_FuzzRevertBelowThreshold(uint256,uint256)":"4fd0bdb6","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"}],\"name\":\"test_BalanceMet_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertBelowThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"},\"test_getTradeableOrder_FuzzRevertBelowThreshold(uint256,uint256)\":{\"details\":\"Fuzz test revert on balance too low\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.tat.t.sol\":\"ComposableCoWTatTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/TradeAboveThreshold.sol\":{\"keccak256\":\"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b\",\"dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.tat.t.sol\":{\"keccak256\":\"0xb6fd38fab9046da17538b416750966a59da0f689b5e1c12beda0b22e80b95998\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ddb6cfb88627f13c425552e3567eb53406b92072394a56af7b5fce6bf2c361a\",\"dweb:/ipfs/QmUS9w1F8NYtsWAHYzvFTKmx4ZMQ2jg9z4YqJuN1nXwWmx\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"currentBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_BalanceMet_fuzz"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[{"internalType":"uint256","name":"currentBalance","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertBelowThreshold"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"},"test_getTradeableOrder_FuzzRevertBelowThreshold(uint256,uint256)":{"details":"Fuzz test revert on balance too low"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.tat.t.sol":"ComposableCoWTatTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/TradeAboveThreshold.sol":{"keccak256":"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7","urls":["bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b","dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA"],"license":"MIT"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.tat.t.sol":{"keccak256":"0xb6fd38fab9046da17538b416750966a59da0f689b5e1c12beda0b22e80b95998","urls":["bzz-raw://3ddb6cfb88627f13c425552e3567eb53406b92072394a56af7b5fce6bf2c361a","dweb:/ipfs/QmUS9w1F8NYtsWAHYzvFTKmx4ZMQ2jg9z4YqJuN1nXwWmx"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":113} \ No newline at end of file diff --git a/out/ComposableCoW.twap.t.sol/ComposableCoWTwapTest.json b/out/ComposableCoW.twap.t.sol/ComposableCoWTwapTest.json new file mode 100644 index 0000000..a10a89e --- /dev/null +++ b/out/ComposableCoW.twap.t.sol/ComposableCoWTwapTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leaves","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"orderFills","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safe1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"safe3","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_TWAPOrderMathLib_calculateValidTo","inputs":[{"name":"currentTime","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"numParts","type":"uint256","internalType":"uint256"},{"name":"frequency","type":"uint256","internalType":"uint256"},{"name":"span","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertIfBeforeStart","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertIfExpired","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertIfOrderAfterBlocktimestampValidity","inputs":[{"name":"ctxBlockTimestamp","type":"uint256","internalType":"uint256"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertIfOrderBeforeBlockTimestamp","inputs":[{"name":"ctxBlockTimestamp","type":"uint256","internalType":"uint256"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertIfOutsideSpan","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidFrequency","inputs":[{"name":"frequency","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidNumParts","inputs":[{"name":"numParts","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidSpan","inputs":[{"name":"frequency","type":"uint256","internalType":"uint256"},{"name":"span","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidStartTime","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_RevertOnSameTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_RevertOnTokenZero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_RevertOnZeroMinPartLimit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_RevertOnZeroPartSellAmount","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_e2e_fuzz","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTradeableOrder_e2e_fuzz_WithContext","inputs":[{"name":"_blockTimestamp","type":"uint32","internalType":"uint32"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_settle_e2e","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_simulate_fuzz","inputs":[{"name":"numParts","type":"uint32","internalType":"uint32"},{"name":"frequency","type":"uint32","internalType":"uint32"},{"name":"span","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_verify_e2e_fuzz","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"currentTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"ConditionalOrderCreated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct IConditionalOrder.ConditionalOrderParams","components":[{"name":"handler","type":"address","internalType":"contract IConditionalOrder"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"staticInput","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MerkleRootSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"proof","type":"tuple","indexed":false,"internalType":"struct ComposableCoW.Proof","components":[{"name":"location","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"SwapGuardSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"swapGuard","type":"address","indexed":false,"internalType":"contract ISwapGuard"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"OrderNotValid","inputs":[{"name":"","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790553480156200002e57600080fd5b506040516200003d9062000389565b604051809103906000f0801580156200005a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055604051620000899062000397565b604051809103906000f080158015620000a6573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392909216919091179055604051620000d590620003a5565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200012190620003b3565b604051809103906000f0801580156200013e573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200016d90620003c1565b604051809103906000f0801580156200018a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051620001b990620003cf565b604051809103906000f080158015620001d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516200020590620003dd565b6040808252600790820152660546f6b656e20360cc1b606082015260806020820181905260029082015261054360f41b60a082015260c001604051809103906000f0801580156200025a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200028990620003dd565b604080825260079082015266546f6b656e203160c81b606082015260806020820181905260029082015261543160f01b60a082015260c001604051809103906000f080158015620002de573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516200030d90620003dd565b6040808252600790820152662a37b5b2b7101960c91b6060820152608060208201819052600290820152612a1960f11b60a082015260c001604051809103906000f08015801562000362573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392909216919091179055620003eb565b613dd18062017e4c83390190565b610979806201bc1d83390190565b611168806201c59683390190565b6124eb806201d6fe83390190565b6102ec806201fbe983390190565b610470806201fed583390190565b610e13806202034583390190565b62017a5080620003fc6000396000f3fe60806040523480156200001157600080fd5b5060043610620003b55760003560e01c8063ab5b084211620001f9578063c80916d41162000119578063e20c9f7111620000af578063f7213db61162000086578063f7213db614620007d4578063fa7626d414620007f7578063fbfa77cf1462000805578063ff6fd6dd146200081957600080fd5b8063e20c9f71146200079c578063e27d515314620007a6578063e4d3ab9914620007bd57600080fd5b8063d21220a711620000f0578063d21220a71462000746578063dd1d2599146200075a578063dfe274a91462000771578063e2052305146200078557600080fd5b8063c80916d41462000711578063cd36c9141462000725578063cf06c7b7146200072f57600080fd5b8063b8616195116200018f578063c3fe505c1162000166578063c3fe505c14620006c5578063c45a015514620006dc578063c50985fb14620006f0578063c522bb6e146200070757600080fd5b8063b8616195146200067e578063ba414fa614620006a4578063bbba172114620006ae57600080fd5b8063b3d79d0c11620001d0578063b3d79d0c146200063f578063b5508aa91462000656578063b62654fb1462000660578063b716db66146200067457600080fd5b8063ab5b084214620005fd578063ad9b04751462000614578063b081cb18146200062857600080fd5b80633e5e3c2311620002e557806366d9a9a0116200027b57806385226c81116200025257806385226c8114620005af578063916a17c614620005c85780639c02039914620005d25780639fbcc9ad14620005e957600080fd5b806366d9a9a0146200056e5780637d499aa414620005875780638406c079146200059b57600080fd5b806350bcf4ca11620002bc57806350bcf4ca146200050457806351160630146200051b57806358161a42146200052f5780635ab3c27d146200055757600080fd5b80633e5e3c2314620004e65780633f7286f414620004f057806348c72e2914620004fa57600080fd5b806319f98a58116200035b57806327f72eb3116200033257806327f72eb3146200048b578063294402cc14620004a25780632e08d60214620004b6578063329696ac14620004dc57600080fd5b806319f98a5814620004545780631ed7831c146200045e57806325be124e146200047757600080fd5b80630ef28fec11620003905780630ef28fec146200040b578063151bcd2c146200041557806316805336146200043d57600080fd5b80630a9254e414620003ba5780630c8548f514620003c65780630dfe168114620003f7575b600080fd5b620003c462000830565b005b603354620003da906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620003da906001600160a01b031681565b620003c462000a85565b6200042c620004263660046200beb4565b62000bfb565b604051620003ee939291906200bf22565b620003c46200044e3660046200bf4c565b62000cb8565b620003c46200130d565b620004686200151a565b604051620003ee91906200bfb5565b602354620003da906001600160a01b031681565b620003c46200049c3660046200bf4c565b6200157e565b601f54620003da906001600160a01b031681565b620004cd620004c73660046200c0e9565b62001706565b604051908152602001620003ee565b620003c4620017e2565b62000468620018f0565b6200046862001952565b620003c4620019b4565b620003c4620005153660046200c135565b62001c56565b602554620003da906001600160a01b031681565b62000546620005403660046200c164565b6200254f565b6040519015158152602001620003ee565b620003c4620005683660046200bf4c565b620025a2565b62000578620028e9565b604051620003ee91906200c1b8565b603254620003da906001600160a01b031681565b602a54620003da906001600160a01b031681565b620005b9620029f1565b604051620003ee91906200c2a5565b6200057862002acb565b620003c4620005e33660046200beb4565b62002bca565b601e54620003da906001600160a01b031681565b620003c46200060e3660046200bf4c565b62002e58565b603154620003da906001600160a01b031681565b620003c4620006393660046200beb4565b620032fd565b620003c4620006503660046200bf4c565b62003401565b620005b9620039cf565b601b54620003da906001600160a01b031681565b620003c462003aa9565b620006956200068f3660046200c329565b62003be5565b604051620003ee91906200c3a4565b6200054662003dbd565b620003c4620006bf3660046200bf4c565b62003f09565b620003c4620006d63660046200bf4c565b62004497565b601c54620003da906001600160a01b031681565b620003c4620007013660046200c3b9565b6200486f565b620003c462005730565b601d54620003da906001600160a01b031681565b620003c4620057c9565b620004cd620007403660046200beb4565b62005874565b602254620003da906001600160a01b031681565b620004cd6200076b3660046200bf4c565b620059e5565b602054620003da906001600160a01b031681565b620003c4620007963660046200bf4c565b62005a15565b6200046862005d72565b620004cd620007b73660046200beb4565b62005dd4565b620003c4620007ce3660046200c40b565b62005e01565b620004cd620007e53660046200beb4565b60476020526000908152604090205481565b600054620005469060ff1681565b602454620003da906001600160a01b031681565b620003c46200082a3660046200beb4565b6200620d565b6200083a62006326565b6034546040516001600160a01b039091169062000857906200be0f565b6001600160a01b039091168152602001604051809103906000f08015801562000884573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620008cb906200be1d565b604051809103906000f080158015620008e8573d6000803e3d6000fd5b50604680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556200093a6200093442620151806200c476565b620066a6565b8051603a80547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03938416179091556020830151603b80548316918416919091179055604080840151603c8054909316908416179091556060830151603d556080830151603e5560a0830151603f5560c0830151905560e082015160415561010082015160425561012090910151604355602154603154620009f69291821691166905150ae84a8cdf000000620067c1565b6031546040805161014081018252603a546001600160a01b03908116808352603b5482166020840152603c54821683850152603d5460608401819052603e546080850152603f5460a0850152935460c0840181905260415460e085015260425461010085015260435461012085015262000a82959290921693909162000a7c916200c48c565b620067d0565b50565b60315460009062000aa1906001600160a01b03166032620069bf565b90506000808062000abd848260396200170662003be562006c51565b92509250925062000b09603160009054906101000a90046001600160a01b0316846040518060400160405280600081526020016040518060200160405280600081525081525062006f42565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152919384936001600160a01b03918216936326e0a1969362000b6f939092169188918a906004016200c4da565b600060405180830381865afa15801562000b8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bb791908101906200c635565b60315460408051808201909152602d546001600160a01b039081168252602e54602083015293955091935062000bf392169084846000620071bb565b505050505050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000c2f906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462000c5d906200c6ec565b801562000cae5780601f1062000c825761010080835404028352916020019162000cae565b820191906000526020600020905b81548152906001019060200180831162000c9057829003601f168201915b5050505050905083565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000d0957600080fd5b505afa15801562000d1e573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000d7357600080fd5b505afa15801562000d88573d6000803e3d6000fd5b5050604051632631f2b160e11b81528385106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000dd957600080fd5b505afa15801562000dee573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062000e1e90506018610e106200c741565b62000e309063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b15801562000e8057600080fd5b505afa15801562000e95573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e1062000ec886866200c76c565b62000ed491906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152911115600482015260240160006040518083038186803b15801562000f2457600080fd5b505afa15801562000f39573d6000803e3d6000fd5b50505050600062000f4a83620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000fb457600080fd5b505af115801562000fc9573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc491506000908190819062000ffc9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200105095949392906004016200c862565b61018060405180830381865afa1580156200106f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200109591906200c8b6565b506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620010fd57600080fd5b505af115801562001112573d6000803e3d6000fd5b5050604080518082018252600f81527f6e6f742077697468696e207370616e000000000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162001197916024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200120b916004016200c8d6565b600060405180830381600087803b1580156200122657600080fd5b505af11580156200123b573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc49150600090819081906200126e9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620012c295949392906004016200c862565b61018060405180830381865afa158015620012e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200130791906200c8b6565b50505050565b60006200131a42620066a6565b60006080820152604080518082018252601681527f696e76616c6964206d696e2070617274206c696d69740000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a691906024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200141a916004016200c8d6565b600060405180830381600087803b1580156200143557600080fd5b505af11580156200144a573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc49150600090819081906200147d9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620014d195949392906004016200c862565b61018060405180830381865afa158015620014f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151691906200c8b6565b5050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200157457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001555575b5050505050905090565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e5628315801590620015ac57506301e133808411155b6040518263ffffffff1660e01b8152600401620015cd911515815260200190565b60006040518083038186803b158015620015e657600080fd5b505afa158015620015fb573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200164c57600080fd5b505afa15801562001661573d6000803e3d6000fd5b5050505060006200167242620066a6565b60e081018490526101008101839052604080518082018252600c81527f696e76616c6964207370616e000000000000000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc272500000000000000000000000000000000000000000000000000000000916200119791906024016200c8d6565b600060018251116200179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600182511115620017bd57620017b58262007ae9565b91506200179f565b81600081518110620017d357620017d36200c8eb565b60200260200101519050919050565b603454604080517ff698da250000000000000000000000000000000000000000000000000000000081529051620018ee926001600160a01b03169163f698da259160048083019260209291908290030181865afa15801562001848573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200186e91906200c91a565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018e891906200c91a565b62007c75565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001574576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001555575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001574576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001555575050505050905090565b6000620019c142620066a6565b60008152604080518082018252600d81527f696e76616c696420746f6b656e0000000000000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162001a4a91906024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001abe916004016200c8d6565b600060405180830381600087803b15801562001ad957600080fd5b505af115801562001aee573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc491506000908190819062001b219087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262001b7595949392906004016200c862565b61018060405180830381865afa15801562001b94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bba91906200c8b6565b506021546001600160a01b031681526000602080830191909152604080518082018252600d81527f696e76616c696420746f6b656e000000000000000000000000000000000000009281019290925251737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a6916024016200c8d6565b604051632631f2b160e11b815263ffffffff838116106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001ca957600080fd5b505afa15801562001cbe573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001d1357600080fd5b505afa15801562001d28573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff851684116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001d7f57600080fd5b505afa15801562001d94573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062001dc490506018610e106200c741565b62001dd090856200c934565b63ffffffff1683106040518263ffffffff1660e01b815260040162001df9911515815260200190565b60006040518083038186803b15801562001e1257600080fd5b505afa15801562001e27573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e1062001e6063ffffffff8716866200c76c565b62001e6c91906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529111600482015260240160006040518083038186803b15801562001ebb57600080fd5b505afa15801562001ed0573d6000803e3d6000fd5b50505050600062001ee26000620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815263ffffffff85166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562001f5157600080fd5b505af115801562001f66573d6000803e3d6000fd5b5050603154835160c085015160608601516000955062001fbf94506001600160a01b039093169286929162001f9b916200c48c565b6046546040805160208101909152600081526001600160a01b039091169062007d87565b6034546031546040517f5500079d000000000000000000000000000000000000000000000000000000008152929350620020f8926001600160a01b0392831692631c7662c89216908390635500079d906200201f9088906004016200c954565b602060405180830381865afa1580156200203d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206391906200c91a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620020c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020eb91906200c91a565b63ffffffff861662007c75565b603454603154604080516020808201835260008083528351818152918201938490527f26e0a19600000000000000000000000000000000000000000000000000000000909352919384936001600160a01b03918216936326e0a196936200216993909216918891602481016200c4da565b600060405180830381865afa15801562002187573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620021b191908101906200c635565b603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062002375937f1626ba7e00000000000000000000000000000000000000000000000000000000936001600160a01b0393841693631626ba7e93620022e8938a93929091169163f698da259160048083019260209291908290030181865afa15801562002256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200227c91906200c91a565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856040518363ffffffff1660e01b8152600401620023089291906200c969565b602060405180830381865afa15801562002326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200234c91906200c984565b7fffffffff00000000000000000000000000000000000000000000000000000000161462007f2f565b6031546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620023e857600080fd5b505af1158015620023fd573d6000803e3d6000fd5b505050506000836040516020016200241691906200c954565b60408051808303601f190181529082905280516020909101206034547f95bc2673000000000000000000000000000000000000000000000000000000008352600483018290529092506001600160a01b0316906395bc267390602401600060405180830381600087803b1580156200248d57600080fd5b505af1158015620024a2573d6000803e3d6000fd5b50506034546031546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905262002546945091169150631c7662c890604401602060405180830381865afa15801562002518573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200253e91906200c91a565b600062007c75565b50505050505050565b81516000908290825b81811015620025945762002589838783815181106200257b576200257b6200c8eb565b6020026020010151620059e5565b925060010162002558565b5050841490505b9392505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562620025ce610e1063ffffffff6200c9c8565b63ffffffff1684106040518263ffffffff1660e01b8152600401620025f7911515815260200190565b60006040518083038186803b1580156200261057600080fd5b505afa15801562002625573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200267657600080fd5b505afa1580156200268b573d6000803e3d6000fd5b5050505060006200269c83620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200270657600080fd5b505af11580156200271b573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc49150600090819081906200274e9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620027a295949392906004016200c862565b61018060405180830381865afa158015620027c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027e791906200c8b6565b506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200284f57600080fd5b505af115801562002864573d6000803e3d6000fd5b5050604080518082018252601181527f6265666f7265207477617020737461727400000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162001197916024016200c8d6565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620029e85760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029cf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200297b5790505b505050505081525050815260200190600101906200290d565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620029e857838290600052602060002001805462002a37906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462002a65906200c6ec565b801562002ab65780601f1062002a8a5761010080835404028352916020019162002ab6565b820191906000526020600020905b81548152906001019060200180831162002a9857829003601f168201915b50505050508152602001906001019062002a15565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620029e85760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002bb157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002b5d5790505b5050505050815250508152602001906001019062002aef565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562600183108062002bf757506301e1338083115b6040518263ffffffff1660e01b815260040162002c18911515815260200190565b60006040518083038186803b15801562002c3157600080fd5b505afa15801562002c46573d6000803e3d6000fd5b50505050600062002c5742620066a6565b60e08101839052604080518082018252601181527f696e76616c6964206672657175656e637900000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162002ce391906024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262002d57916004016200c8d6565b600060405180830381600087803b15801562002d7257600080fd5b505af115801562002d87573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc491506000908190819062002dba9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262002e0e95949392906004016200c862565b61018060405180830381865afa15801562002e2d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e5391906200c8b6565b505050565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002ea957600080fd5b505afa15801562002ebe573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002f1357600080fd5b505afa15801562002f28573d6000803e3d6000fd5b5050604051632631f2b160e11b81528385106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002f7957600080fd5b505afa15801562002f8e573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062002fbe90506018610e106200c741565b62002fd09063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b1580156200302057600080fd5b505afa15801562003035573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e106200306886866200c76c565b6200307491906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529111600482015260240160006040518083038186803b158015620030c357600080fd5b505afa158015620030d8573d6000803e3d6000fd5b505050506000620030e983620066a6565b603154815160c083015160608401519394506000936200311d936001600160a01b0316928692909162000a7c91906200c48c565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200318757600080fd5b505af11580156200319c573d6000803e3d6000fd5b5050603454603154604080516020808201835260008083528351818152918201938490527f26e0a196000000000000000000000000000000000000000000000000000000009093529195508594506001600160a01b03938416936326e0a1969362003210939116918891602481016200c4da565b600060405180830381865afa1580156200322e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200325891908101906200c635565b603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062000bf3937f1626ba7e00000000000000000000000000000000000000000000000000000000936001600160a01b0393841693631626ba7e93620022e8938a93929091169163f698da259160048083019260209291908290030181865afa15801562002256573d6000803e3d6000fd5b604051632631f2b160e11b815263ffffffff8210156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200334f57600080fd5b505afa15801562003364573d6000803e3d6000fd5b5050505060006200337582620066a6565b60a08101839052604080518082018252601281527f696e76616c69642073746172742074696d65000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162002ce391906024016200c8d6565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200345257600080fd5b505afa15801562003467573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620034bc57600080fd5b505afa158015620034d1573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291506200350190506018610e106200c741565b620035139063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908411600482015260240160006040518083038186803b1580156200356357600080fd5b505afa15801562003578573d6000803e3d6000fd5b5050505060006200358a6000620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620035f457600080fd5b505af115801562003609573d6000803e3d6000fd5b5050603154835160c08501516060860151600095506200363e94506001600160a01b039093169286929162001f9b916200c48c565b6034546031546040517f5500079d00000000000000000000000000000000000000000000000000000000815292935062003771926001600160a01b0392831692631c7662c89216908390635500079d906200369e9088906004016200c954565b602060405180830381865afa158015620036bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036e291906200c91a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562003744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200376a91906200c91a565b8562007c75565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620037d857600080fd5b505af1158015620037ed573d6000803e3d6000fd5b5050604080518082018252601181527f616674657220747761702066696e69736800000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162003872916024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620038e6916004016200c8d6565b600060405180830381600087803b1580156200390157600080fd5b505af115801562003916573d6000803e3d6000fd5b5050603454603154604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b0393841695506326e0a19694506200398793909216918691602481016200c4da565b600060405180830381865afa158015620039a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bf391908101906200c635565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620029e857838290600052602060002001805462003a15906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462003a43906200c6ec565b801562003a945780601f1062003a685761010080835404028352916020019162003a94565b820191906000526020600020905b81548152906001019060200180831162003a7657829003601f168201915b505050505081526020019060010190620039f3565b601e54603154602554604080517ff698da250000000000000000000000000000000000000000000000000000000081529051620018ee946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562003b25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b4b91906200c91a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562003bad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bd391906200c9e8565b6034546001600160a01b031662007fa7565b6060600183511162003c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162001796565b600062003c87845162005874565b67ffffffffffffffff81111562003ca25762003ca26200bfca565b60405190808252806020026020018201604052801562003ccc578160200160208202803683370190505b50905060005b60018551111562003db3578360011660010362003d305784600185038151811062003d015762003d016200c8eb565b602002602001015182828151811062003d1e5762003d1e6200c8eb565b60200260200101818152505062003d97565b8451846001010362003d55576000801b82828151811062003d1e5762003d1e6200c8eb565b84846001018151811062003d6d5762003d6d6200c8eb565b602002602001015182828151811062003d8a5762003d8a6200c8eb565b6020026020010181815250505b60010160028404935062003dab8562007ae9565b945062003cd2565b5090505b92915050565b60008054610100900460ff161562003dde5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562003f045760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162003e86917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200ca08565b60408051601f198184030181529082905262003ea2916200ca52565b6000604051808303816000865af19150503d806000811462003ee1576040519150601f19603f3d011682016040523d82523d6000602084013e62003ee6565b606091505b509150508080602001905181019062003f0091906200ca70565b9150505b919050565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003f5a57600080fd5b505afa15801562003f6f573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003fc457600080fd5b505afa15801562003fd9573d6000803e3d6000fd5b5050604051632631f2b160e11b81528385106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200402a57600080fd5b505afa1580156200403f573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291506200406f90506018610e106200c741565b620040819063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b158015620040d157600080fd5b505afa158015620040e6573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e106200411986866200c76c565b6200412591906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529111600482015260240160006040518083038186803b1580156200417457600080fd5b505afa15801562004189573d6000803e3d6000fd5b5050505060006200419a83620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200420457600080fd5b505af115801562004219573d6000803e3d6000fd5b5050603854604051600093506001600160a01b03909116915063b8296fc4908390819081906200424e9088906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620042a295949392906004016200c862565b61018060405180830381865afa158015620042c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042e791906200c8b6565b90506000603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200433f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200436591906200c91a565b6038549091506001600160a01b03166314a2a784600080620043ee8686601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856000801b896040516020016200440691906200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526200445e979695949392908c906004016200ca8e565b60006040518083038186803b1580156200447757600080fd5b505afa1580156200448c573d6000803e3d6000fd5b505050505050505050565b604051632631f2b160e11b815263ffffffff8311156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620044e957600080fd5b505afa158015620044fe573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff8411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200455457600080fd5b505afa15801562004569573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291506200459990506018610e106200c741565b620045ab9063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815290841015600482015260240160006040518083038186803b158015620045fc57600080fd5b505afa15801562004611573d6000803e3d6000fd5b5050505060006200462283620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200468c57600080fd5b505af1158015620046a1573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc4915060009081908190620046d49087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200472895949392906004016200c862565b61018060405180830381865afa15801562004747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200476d91906200c8b6565b506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620047d557600080fd5b505af1158015620047ea573d6000803e3d6000fd5b5050604080518082018252601181527f616674657220747761702066696e69736800000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162001197916024016200c8d6565b604051632631f2b160e11b815263ffffffff838116908316106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620048c557600080fd5b505afa158015620048da573d6000803e3d6000fd5b50505050620048f88363ffffffff16600263ffffffff8016620080b9565b9250620049148263ffffffff16607863ffffffff8016620080b9565b9150737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56263ffffffff8316156200499a576138406200494c84866200c9c8565b63ffffffff168663ffffffff166200496591906200c48c565b620049729060036200c48c565b6200498763ffffffff8087169089166200c48c565b6200499391906200c476565b10620049b4565b610e10620049b263ffffffff8087169088166200c48c565b105b6040518263ffffffff1660e01b8152600401620049d5911515815260200190565b60006040518083038186803b158015620049ee57600080fd5b505afa15801562004a03573d6000803e3d6000fd5b50505050600062004a1442620066a6565b63ffffffff80861660c0830181905285821660e08401529084166101008301528151603154606084015193945062004a669391926001600160a01b039091169162004a6091906200c48c565b620067c1565b6020810151602d5460c0830151608084015162004a9393926001600160a01b03169162004a60916200c48c565b80516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562004afd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b2391906200c91a565b60208301516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562004b91573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bb791906200c91a565b8351602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562004c22573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c4891906200c91a565b6020850151602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562004cb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cdc91906200c91a565b603154865160c0880151606089015193945060009362004d10936001600160a01b0316928a92909162000a7c91906200c48c565b60a08701516040517fe5d6bf020000000000000000000000000000000000000000000000000000000081529192506000918291737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029162004d709160040190815260200190565b600060405180830381600087803b15801562004d8b57600080fd5b505af115801562004da0573d6000803e3d6000fd5b5050505060008860e001518960c0015162004dbc91906200c48c565b8960a0015162004dcd91906200c476565b90505b603454603154604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b03938416936326e0a1969362004e3c939116918991602481016200c4da565b600060405180830381865afa92505050801562004e7d57506040513d6000823e601f3d908101601f1916820160405262004e7a91908101906200c635565b60015b620050a0573d80801562004eae576040519150601f19603f3d011682016040523d82523d6000602084013e62004eb3565b606091505b50600062004ec1826200cbb9565b9050824214801562004f1457507fffffffff0000000000000000000000000000000000000000000000000000000081167fc8fc272500000000000000000000000000000000000000000000000000000000145b1562004f22575050620052bc565b8242111562004fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f726465724e6f7456616c696428292073686f756c642068617665206265656e60448201527f207468726f776e00000000000000000000000000000000000000000000000000606482015260840162001796565b63ffffffff8c161580156200500a57507fffffffff0000000000000000000000000000000000000000000000000000000081167fc8fc272500000000000000000000000000000000000000000000000000000000145b1562005098576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f726465724e6f7456616c696428292073686f756c64206e6f7420626520746860448201527f726f776e00000000000000000000000000000000000000000000000000000000606482015260840162001796565b50506200523c565b6000620050fb83602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002256573d6000803e3d6000fd5b600081815260476020526040902054909150158015620051cb57506031546040517f1626ba7e00000000000000000000000000000000000000000000000000000000808252916001600160a01b031690631626ba7e906200516390859087906004016200c969565b602060405180830381865afa15801562005181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051a791906200c984565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b15620052295760315460408051808201909152602d546001600160a01b039081168252602e5460208301526200520792169085856000620071bb565b6000818152604760205260409020600190558562005225816200cc06565b9650505b8462005235816200cc06565b9550505050505b737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf02620052634260016200c476565b6040518263ffffffff1660e01b81526004016200528291815260200190565b600060405180830381600087803b1580156200529d57600080fd5b505af1158015620052b2573d6000803e3d6000fd5b5050505062004dd0565b620053258960e001518a60c00151620052d691906200c48c565b8a60a00151620052e791906200c476565b42146040518060400160405280601c81526020017f54574150206f726465722073686f756c642062652065787069726564000000008152506200810b565b6200538b63ffffffff8b161562005353578961010001518a60c001516200534d91906200c48c565b62005369565b8960e001518a60c001516200536991906200c48c565b8314604051806060016040528060288152602001620179f3602891396200810b565b620053d28960c0015184146040518060400160405280601c81526020017f4e756d626572206f662066696c6c7320697320696e636f7272656374000000008152506200810b565b620054a48960c001518a60600151620053ec91906200c48c565b620053f8908a6200c76c565b8a516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156200545d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200548391906200c91a565b14604051806060016040528060298152602001620179ca602991396200810b565b6200557a8960c001518a60800151620054be91906200c48c565b620054ca90896200c476565b60208b01516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801562005532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200555891906200c91a565b10156040518060600160405280602881526020016201795d602891396200810b565b6200564c8960c001518a606001516200559491906200c48c565b620055a090886200c476565b8a51602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801562005605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200562b91906200c91a565b1460405180606001604052806022815260200162017985602291396200810b565b620057228960c001518a608001516200566691906200c48c565b6200567290876200c76c565b60208b0151602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015620056da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200570091906200c91a565b1015604051806060016040528060238152602001620179a7602391396200810b565b505050505050505050505050565b60006200573d42620066a6565b60006060820152604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e74000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a691906024016200c8d6565b6000620057d642620066a6565b6021546001600160a01b0316808252602080830191909152604080518082018252600a81527f73616d6520746f6b656e000000000000000000000000000000000000000000009281019290925251919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a691906024016200c8d6565b6000600182116200588757506000919050565b6000827001000000000000000000000000000000008110620058b857608093841c93620058b590836200c476565b91505b680100000000000000008410620058de57604093841c93620058db90836200c476565b91505b64010000000084106200590057602093841c93620058fd90836200c476565b91505b6201000084106200592057601093841c936200591d90836200c476565b91505b61010084106200593f57600893841c936200593c90836200c476565b91505b601084106200595d57600493841c936200595a90836200c476565b91505b600484106200597b57600293841c936200597890836200c476565b91505b600284106200599457620059916001836200c476565b91505b600081620059a5811960016200c476565b1690508181148015620059b85750600083115b15620059c75750909392505050565b620059d48360016200c476565b95945050505050565b505050919050565b60008183108015620059ff57836000528260205262005a08565b82600052836020525b5050604060002092915050565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562005a6657600080fd5b505afa15801562005a7b573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562005ad057600080fd5b505afa15801562005ae5573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562005b3657600080fd5b505afa15801562005b4b573d6000803e3d6000fd5b50505050600062005b5d6000620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562005bc757600080fd5b505af115801562005bdc573d6000803e3d6000fd5b5050603154835160c085015160608601516000955062005c1194506001600160a01b039093169286929162001f9b916200c48c565b6034546031546040517f5500079d00000000000000000000000000000000000000000000000000000000815292935062005c71926001600160a01b0392831692631c7662c89216908390635500079d906200369e9088906004016200c954565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562005cd857600080fd5b505af115801562005ced573d6000803e3d6000fd5b5050604080518082018252601181527f6265666f7265207477617020737461727400000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162003872916024016200c8d6565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001574576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001555575050505050905090565b6000808219600101831683145b831562005df957600193841c93919091019062005de1565b900392915050565b604051632631f2b160e11b815263ffffffff8611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562005e5357600080fd5b505afa15801562005e68573d6000803e3d6000fd5b5050505062005e8083600263ffffffff8016620080b9565b925062005e948260016301e13380620080b9565b604051632631f2b160e11b8152818311156004820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562005ee557600080fd5b505afa15801562005efa573d6000803e3d6000fd5b5050604051632631f2b160e11b8152868810156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562005f4c57600080fd5b505afa15801562005f61573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062005f8e905084866200c48c565b62005f9a90876200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908810600482015260240160006040518083038186803b15801562005fea57600080fd5b505afa15801562005fff573d6000803e3d6000fd5b5050505060008285876200601491906200c76c565b6200602091906200cc41565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56260008490036200604e5760006200605a565b6200605a84866200c76c565b85620060688560016200c476565b6200607491906200c48c565b6200608090896200c476565b6200608c91906200c76c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908910600482015260240160006040518083038186803b158015620060dc57600080fd5b505afa158015620060f1573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200615c57600080fd5b505af115801562006171573d6000803e3d6000fd5b505050506000620061858686868662008155565b905060006001846000036200619c576000620061a8565b620061a885876200c76c565b86620061b68660016200c476565b620061c291906200c48c565b620061ce908a6200c476565b620061da91906200c76c565b620061e691906200c76c565b9050620061f68883101562007f2f565b6200620381831462007f2f565b5050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56260028310806200623a575063ffffffff83115b6040518263ffffffff1660e01b81526004016200625b911515815260200190565b60006040518083038186803b1580156200627457600080fd5b505afa15801562006289573d6000803e3d6000fd5b5050505060006200629a42620066a6565b60c08101839052604080518082018252601181527f696e76616c6964206e756d20706172747300000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162002ce391906024016200c8d6565b62006330620082fe565b6025546040516001600160a01b03909116906200634d906200be2b565b6001600160a01b039091168152602001604051809103906000f0801580156200637a573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200650294938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa1580156200643b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200646191906200c91a565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526000620064eb620086c0565b6031546001600160a01b031694939291906200879a565b60405162006510906200be39565b604051809103906000f0801580156200652d573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162006574906200be47565b604051809103906000f08015801562006591573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620065d8906200be55565b604051809103906000f080158015620065f5573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556034546040519116906200663e906200be0f565b6001600160a01b039091168152602001604051809103906000f0801580156200666b573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6200671b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600080191681525090565b60408051610140810182526021546001600160a01b039081168252602254166020820152600091810191909152606081016200676360186905150ae84a8cdf0000006200cc41565b815268056bc75e2d631000006020820152604081019390935260186060840152610e10608084015261012c60a08401527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b414260c0909301929092525090565b62002e538383836000620089cd565b604080516060808201835260008083526020830152918101919091526038546040516200687e916001600160a01b0316907f9294e743cfa74bb19889de64df8402afca751b12255b896d7c973195ea70037d90620068339088906020016200c7c8565b60408051601f19818403018152606080840183526000808552602085810191909152938301819052825190810183526001600160a01b03959095168552918401929092529082015290565b90506200688e8582600062008c5a565b6200689b838684620067c1565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200690a57600080fd5b505af11580156200691f573d6000803e3d6000fd5b5050602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052908616925063095ea7b391506044016020604051808303816000875af115801562006990573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069b691906200ca70565b50949350505050565b60408051610140810182526021546001600160a01b03908116825260225416602082015260009181018290526001606082810182905260808301919091524260a0830152600260c0830152610e1060e08301526101008201929092527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b41426101208201528267ffffffffffffffff81111562006a5e5762006a5e6200bfca565b60405190808252806020026020018201604052801562006aad57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162006a7d5790505b50915060005b825181101562006b5c57604080516060810182526038546001600160a01b0316815281516020808201859052919291830191016040516020818303038152906040528051906020012081526020018360405160200162006b1491906200c7c8565b60405160208183030381529060405281525083828151811062006b3b5762006b3b6200c8eb565b6020026020010181905250808062006b53906200cc06565b91505062006ab3565b508051602a54606083015160c084015162006c4a93926000927f095ea7b300000000000000000000000000000000000000000000000000000000926001600160a01b039092169162006baf91906200c48c565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062006c35620086c0565b6001600160a01b038a1694939291906200879a565b5092915050565b60408051606081810183526000808352602083018190529282018190529060005b885181101562006d415788818151811062006c915762006c916200c8eb565b602002602001015187600062006cc38c858151811062006cb55762006cb56200c8eb565b602002602001015162008f06565b81526020808201929092526040908101600020835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178155918301516001830155820151600282019062006d2790826200cca2565b50905050808062006d38906200cc06565b91505062006c72565b506000885167ffffffffffffffff81111562006d615762006d616200bfca565b60405190808252806020026020018201604052801562006d8b578160200160208202803683370190505b50905060005b895181101562006de95762006db48a828151811062006cb55762006cb56200c8eb565b82828151811062006dc95762006dc96200c8eb565b60209081029190910101528062006de0816200cc06565b91505062006d91565b50600062006df78262008f55565b9050600062006e09828963ffffffff16565b9050600062006e1c838c8a63ffffffff16565b905060008a6000858e8151811062006e385762006e386200c8eb565b602002602001015181526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201805462006ea4906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462006ed2906200c6ec565b801562006f235780601f1062006ef75761010080835404028352916020019162006f23565b820191906000526020600020905b81548152906001019060200180831162006f0557829003601f168201915b5050509190925250949f939e50909c50919a5050505050505050505050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562006fb157600080fd5b505af115801562006fc6573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200704657600080fd5b505af11580156200705b573d6000803e3d6000fd5b50505050826001600160a01b03167f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e5783836040516200709c9291906200cdab565b60405180910390a26034546040517f1ab0dd9d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631ab0dd9d90620070f190859085906004016200cdab565b600060405180830381600087803b1580156200710c57600080fd5b505af115801562007121573d6000803e3d6000fd5b50506034546040517fa45468760000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015262002e539450909116915063a454687690602401602060405180830381865afa1580156200718e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071b491906200c91a565b8362007c75565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525090506000620073166200730e83602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002256573d6000803e3d6000fd5b879062009076565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200738b57600080fd5b505af1158015620073a0573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af115801562007418573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200743e91906200ca70565b506040805160028082526060820183526000926020830190803683370190505090508560000151816000815181106200747b576200747b6200c8eb565b60200260200101906001600160a01b031690816001600160a01b031681525050856020015181600181518110620074b657620074b66200c8eb565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090508360600151816000815181106200750c576200750c6200c8eb565b6020026020010181815250508360800151816001815181106200753357620075336200c8eb565b602090810291909101015260408051600280825260608201909252600091816020015b620075c6604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b81526020019060019003908162007556579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e0015181526020016200764e8a6002620091a0565b8152602001896060015181526020018b89604051602001620076729291906200cdd9565b604051602081830303815290604052815250816000815181106200769a576200769a6200c8eb565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e00151815260200162007714876000620091a0565b81526020018660600151815260200185815250816001815181106200773d576200773d6200c8eb565b602002602001018190525060006040518060600160405280600067ffffffffffffffff8111156200777257620077726200bfca565b604051908082528060200260200182016040528015620077c157816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620077915790505b50815260200160006040519080825280602002602001820160405280156200781857816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620077e85790505b50815260200160006040519080825280602002602001820160405280156200786f57816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200783f5790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620078e857600080fd5b505af1158015620078fd573d6000803e3d6000fd5b5050507fffffffff0000000000000000000000000000000000000000000000000000000088169050620079b5576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b906200797b9087908790879087906004016200cedb565b600060405180830381600087803b1580156200799657600080fd5b505af1158015620079ab573d6000803e3d6000fd5b5050505062007adc565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562007a3d57600080fd5b505af115801562007a52573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b915062007aa79087908790879087906004016200cedb565b600060405180830381600087803b15801562007ac257600080fd5b505af115801562007ad7573d6000803e3d6000fd5b505050505b5050505050505050505050565b6060806000835190508060011660010362007ba6576002810460010167ffffffffffffffff81111562007b205762007b206200bfca565b60405190808252806020026020018201604052801562007b4a578160200160208202803683370190505b50915062007b7b84600183038151811062007b695762007b696200c8eb565b60200260200101516000801b620059e5565b8260018451038151811062007b945762007b946200c8eb565b60200260200101818152505062007bf3565b6002810467ffffffffffffffff81111562007bc55762007bc56200bfca565b60405190808252806020026020018201604052801562007bef578160200160208202803683370190505b5091505b6000805b6001830381101562007c6b5762007c3c86828151811062007c1c5762007c1c6200c8eb565b60200260200101518783600101815181106200257b576200257b6200c8eb565b84838151811062007c515762007c516200c8eb565b602090810291909101015260019091019060020162007bf7565b5091949350505050565b80821462001516577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007d039060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162007d3c91906200d03b565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162007d7591906200d087565b60405180910390a162001516620092ed565b6040805160608082018352600080835260208301529181019190915260385460405162007dea916001600160a01b0316907f9294e743cfa74bb19889de64df8402afca751b12255b896d7c973195ea70037d9062006833908a906020016200c7c8565b905062007dfc87828585600062009434565b62007e09858886620067c1565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562007e7857600080fd5b505af115801562007e8d573d6000803e3d6000fd5b5050602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101889052908816925063095ea7b391506044016020604051808303816000875af115801562007efe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f2491906200ca70565b509695505050505050565b8062000a82577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007f959060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000a82620092ed565b806001600160a01b0316826001600160a01b03161462001516577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620080479060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200808091906200d0c5565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162007d7591906200d11a565b6000620080c884848462009657565b90506200259b6040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082620098be565b8162001516577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200814291906200d158565b60405180910390a1620015168262007f2f565b60006001841180156200816c575063ffffffff8411155b6200817b576200817b6200d1a1565b6000831180156200819057506301e133808311155b6200819f576200819f6200d1a1565b82821115620081b257620081b26200d1a1565b428511156200822257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526200179691906004016200c8d6565b828402850142106200829557604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526200179691906004016200c8d6565b60008386420381620082ab57620082ab6200c782565b04905082600003620082cb576001848260010102870103915050620082f6565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b620083086200998c565b620083486040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062009de8565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620083cb9062009de8565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c000000000000000000000000000000000000000000000000000000918101919091526200844e9062009de8565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b54620084ad929182169116683635c9adc5dea00000620067c1565b602254602d54620084d5916001600160a01b039081169116683635c9adc5dea00000620067c1565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b0316918391506000906200851b576200851b6200c8eb565b6001600160a01b039283166020918202929092010152602d548251911690829060019081106200854f576200854f6200c8eb565b6001600160a01b039283166020918202929092010152602f548251911690829060029081106200858357620085836200c8eb565b6001600160a01b039283166020918202929092010152601c54601b54601e54620085bd939283169291821691859160029116600062009f6e565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462008615939283169291821691859160029116600162009f6e565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200866c9392831692918216918591600291168162009f6e565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462000a82929182169116683635c9adc5dea00000620067c1565b604080516002808252606082810190935260009190816020015b6040805180820190915260008082526020820152815260200190600190039081620086da57505060408051808201909152602b546001600160a01b03168152602c54602082015281519192509082906000906200873b576200873b6200c8eb565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e54918101919091528151829060019081106200878457620087846200c8eb565b602002602001018190525062003db7816200a072565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620087db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200880191906200c91a565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620088489a999897969594939291906200d23b565b602060405180830381865afa15801562008866573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200888c91906200c91a565b905062008899836200a072565b9250606060005b8451811015620089165781620088dc84878481518110620088c557620088c56200c8eb565b60200260200101516200907690919063ffffffff16565b604051602001620088ef9291906200d2b2565b604051602081830303815290604052915080806200890d906200cc06565b915050620088a0565b50886001600160a01b0316636a7612028989898960008060008060008b6040516020016200894591906200ca52565b6040516020818303038152906040526040518b63ffffffff1660e01b81526004016200897b9a999897969594939291906200d2e5565b6020604051808303816000875af11580156200899b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089c191906200ca70565b50505050505050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162008a51916200ca52565b6000604051808303816000865af19150503d806000811462008a90576040519150601f19603f3d011682016040523d82523d6000602084013e62008a95565b606091505b5091505060008180602001905181019062008ab191906200c91a565b905062008b048462008afd8762008af67f70a082310000000000000000000000000000000000000000000000000000000062008aef60058d6200a1a4565b906200a1e2565b906200a21b565b906200a244565b821562000bf35760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b0389169162008b7d91906200ca52565b6000604051808303816000865af19150503d806000811462008bbc576040519150601f19603f3d011682016040523d82523d6000602084013e62008bc1565b606091505b5091505060008180602001905181019062008bdd91906200c91a565b90508286101562008c085762008bf486846200c76c565b62008c0090826200c76c565b905062008c23565b62008c1483876200c76c565b62008c2090826200c476565b90505b620062038162008afd7f18160ddd0000000000000000000000000000000000000000000000000000000062008aef60058d6200a1a4565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562008cc957600080fd5b505af115801562008cde573d6000803e3d6000fd5b50505050801562008dc2576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562008d6557600080fd5b505af115801562008d7a573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618360405162008db991906200c954565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062008e0f90859085906004016200d36c565b600060405180830381600087803b15801562008e2a57600080fd5b505af115801562008e3f573d6000803e3d6000fd5b505060345460405162002e5393506001600160a01b039091169150636108c53290869062008e729087906020016200c954565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040162008eba9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008ed8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008efe91906200ca70565b60016200a250565b60008160405160200162008f1b91906200c954565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050919050565b606060005b82518110156200906f57600062008f738260016200c476565b90505b8351811015620090595783818151811062008f955762008f956200c8eb565b602002602001015184838151811062008fb25762008fb26200c8eb565b602002602001015111156200904457600084838151811062008fd85762008fd86200c8eb565b6020026020010151905084828151811062008ff75762008ff76200c8eb565b60200260200101518584815181106200901457620090146200c8eb565b602002602001018181525050808583815181106200903657620090366200c8eb565b602002602001018181525050505b8062009050816200cc06565b91505062008f76565b508062009066816200cc06565b91505062008f5a565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015620090f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200911d91906200d392565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc83610100015103620091d3576001175b82610120015115620091e3576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328361014001510362009219576008176200924a565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce836101400151036200924a57600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce836101600151036200927b576010175b60018260038111156200929257620092926200d1d0565b03620092a15760201762003db7565b6002826003811115620092b857620092b86200d1d0565b03620092c75760401762003db7565b6003826003811115620092de57620092de6200d1d0565b0362003db75760601792915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620094065760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620093a192916020016200ca08565b60408051601f1981840301815290829052620093bd916200ca52565b6000604051808303816000865af19150503d8060008114620093fc576040519150601f19603f3d011682016040523d82523d6000602084013e62009401565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620094a357600080fd5b505af1158015620094b8573d6000803e3d6000fd5b5050505080156200959c576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156200953f57600080fd5b505af115801562009554573d6000803e3d6000fd5b50505050846001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361856040516200959391906200c954565b60405180910390a25b6034546040517f0d0d98000000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690630d0d980090620095ed9087908790879087906004016200d3d1565b600060405180830381600087803b1580156200960857600080fd5b505af11580156200961d573d6000803e3d6000fd5b50506034546040516200965093506001600160a01b039091169150636108c53290889062008e729089906020016200c954565b5050505050565b600081831115620096eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840162001796565b828410158015620096fc5750818411155b156200970a5750826200259b565b60006200971884846200c76c565b620097259060016200c476565b9050600385111580156200973857508481115b1562009753576200974a85856200c476565b9150506200259b565b6200978060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200c76c565b8510158015620097ba5750620097b7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200c76c565b81115b15620097f857620097ec857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200c76c565b6200974a90846200c76c565b828511156200985a5760006200980f84876200c76c565b905060006200981f83836200c7b1565b90508060000362009836578493505050506200259b565b60016200984482886200c476565b6200985091906200c76c565b93505050620098b6565b83851015620098b65760006200987186866200c76c565b905060006200988183836200c7b1565b90508060000362009898578593505050506200259b565b620098a481866200c76c565b620098b19060016200c476565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b03168383604051602401620098ea9291906200d41d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc00000000000000000000000000000000000000000000000000000000179052516200994f91906200ca52565b600060405180830381855afa9150503d806000811462000bf3576040519150601f19603f3d011682016040523d82523d6000602084013e62000bf3565b620099cc6040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062009de8565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c76657200000000000000000000000000000000000000000000000000009181019190915262009a4f9062009de8565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262009ad2906200a444565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062009b1b906200be63565b604051809103906000f08015801562009b38573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562009b9c57600080fd5b505af115801562009bb1573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062009bd4906200be71565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562009c08573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562009c95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009cbb91906200c9e8565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562009d5957600080fd5b505af115801562009d6e573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b15801562009dd357600080fd5b505af115801562009650573d6000803e3d6000fd5b604080518082019091526000808252602082015260008260405160200162009e1191906200ca52565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562009e96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009ebc91906200c9e8565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062009f1390849088906004016200d441565b600060405180830381600087803b15801562009f2e57600080fd5b505af115801562009f43573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b8888600089600080600060405160240162009faa97969594939291906200d465565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200a021929187906004016200d4cf565b6020604051808303816000875af11580156200a041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a06791906200c9e8565b979650505050505050565b606060005b82518110156200906f5760006200a0908260016200c476565b90505b83518110156200a18e578381815181106200a0b2576200a0b26200c8eb565b6020026020010151600001516001600160a01b03168483815181106200a0dc576200a0dc6200c8eb565b6020026020010151600001516001600160a01b031611156200a1795760008483815181106200a10f576200a10f6200c8eb565b602002602001015190508482815181106200a12e576200a12e6200c8eb565b60200260200101518584815181106200a14b576200a14b6200c8eb565b6020026020010181905250808583815181106200a16c576200a16c6200c8eb565b6020026020010181905250505b806200a185816200cc06565b9150506200a093565b50806200a19b816200cc06565b9150506200a077565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000826200259b565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200259b565b6002820180546001810182556000918252602082206001600160a01b038416910155826200259b565b6200151682826200a451565b8015158215151462001516577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200a2e29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826200a34d576040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152506200a384565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b6040516200a39391906200d503565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816200a3fe576040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152506200a435565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162007d7591906200d555565b600062006c4a826200a925565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200a4c457602002820191906000526020600020905b8154815260200190600101908083116200a4af575b505050505090506000836200a4d9836200aa73565b6040516020016200a4ec9291906200ca08565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a1683528152928120919450909290916200a5589186918891016200d593565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a593576200a591876200ab20565b505b6001600160a01b0385166000908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051909183916200a5ec9187918991016200d593565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200a63391906200ca52565b600060405180830381855afa9150503d80600081146200a670576040519150601f19603f3d011682016040523d82523d6000602084013e6200a675565b606091505b5091506200a6929050816200a68c8860206200c48c565b6200ab2d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200a712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a73891906200c91a565b90508082146200a817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001796565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b1580156200a89457600080fd5b505af11580156200a8a9573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200a91160028b0160006200be7f565b896004016000905550505050505050505050565b600080826040516020016200a93b91906200ca52565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200a9bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a9e391906200c9e8565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200aa3a90859087906004016200d441565b600060405180830381600087803b1580156200aa5557600080fd5b505af11580156200aa6a573d6000803e3d6000fd5b50505050915091565b60606000825160206200aa8791906200c48c565b67ffffffffffffffff8111156200aaa2576200aaa26200bfca565b6040519080825280601f01601f1916602001820160405280156200aacd576020820181803683370190505b50905060005b835181101562006c4a5760008482815181106200aaf4576200aaf46200c8eb565b6020026020010151905080826020026020018401525080806200ab17906200cc06565b9150506200aad3565b600062003db7826200abcf565b600080600060208551116200ab445784516200ab47565b60205b905060005b818110156200abc5576200ab628160086200c48c565b866200ab6f83886200c476565b815181106200ab82576200ab826200c8eb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200abbc816200cc06565b9150506200ab4c565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200ac4157602002820191906000526020600020905b8154815260200190600101908083116200ac2c575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051959650949193506200aca5925085918791016200d593565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200ad5c576001600160a01b0384166000908152602087815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519092916200ad2c9185918791016200d593565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200ad6a836200bcca565b6040516020016200ad7d9291906200ca08565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200aded57600080fd5b505af11580156200ae02573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200ae2391906200ca52565b600060405180830381855afa9150503d80600081146200ae60576040519150601f19603f3d011682016040523d82523d6000602084013e6200ae65565b606091505b5091506200ae829050816200ae7c8760206200c48c565b6200bd77565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af11580156200aefd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200af2791908101906200d631565b50905080516001036200b3595760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200af7f576200af7f6200c8eb565b60200260200101516040518363ffffffff1660e01b81526004016200afb99291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200afd7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200affd91906200c91a565b9050806200b068577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200b03d576200b03d6200c8eb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200b145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001796565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200b17d9291906200d593565b60405160208183030381529060405280519060200120856000815181106200b1a9576200b1a96200c8eb565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1816000815181106200b21b576200b21b6200c8eb565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c16835284528082209051929390926200b27e918a918c91016200d593565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c168552825282842092519093916200b300918a918c91016200d593565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200bac2565b6001815111156200ba375760005b81518110156200ba305760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200b3bb576200b3bb6200c8eb565b60200260200101516040518363ffffffff1660e01b81526004016200b3f59291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200b413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b43991906200c91a565b9050806200b4a3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200b478576200b4786200c8eb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a8585815181106200b4eb576200b4eb6200c8eb565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b1580156200b57b57600080fd5b505af11580156200b590573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200b5b291906200ca52565b600060405180830381855afa9150503d80600081146200b5ef576040519150601f19603f3d011682016040523d82523d6000602084013e6200b5f4565b606091505b5090925090506200b60c816200ae7c8b60206200c48c565b95508180156200b63b57507f133700000000000000000000000000000000000000000000000000000000000086145b156200b945577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200b6799291906200d593565b604051602081830303815290604052805190602001208888815181106200b6a4576200b6a46200c8eb565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18484815181106200b715576200b7156200c8eb565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f16835284528082209051929390926200b778918d918f91016200d593565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c6040516020016200b82f9291906200d593565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200b8b2576200b8b26200c8eb565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200b92357600080fd5b505af11580156200b938573d6000803e3d6000fd5b505050505050506200ba30565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200b98d576200b98d6200c8eb565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200b9fe57600080fd5b505af11580156200ba13573d6000803e3d6000fd5b5050505050505080806200ba27906200cc06565b9150506200b367565b506200bac2565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162001796565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200bb1e9188918a91016200d593565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200bbd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162001796565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200bc3960028a0160006200be7f565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200bc979188918a91016200d593565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200bcde91906200c48c565b67ffffffffffffffff8111156200bcf9576200bcf96200bfca565b6040519080825280601f01601f1916602001820160405280156200bd24576020820181803683370190505b50905060005b835181101562006c4a5760008482815181106200bd4b576200bd4b6200c8eb565b6020026020010151905080826020026020018401525080806200bd6e906200cc06565b9150506200bd2a565b600080600060208551116200bd8e5784516200bd91565b60205b905060005b818110156200abc5576200bdac8160086200c48c565b866200bdb983886200c476565b815181106200bdcc576200bdcc6200c8eb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200be06816200cc06565b9150506200bd96565b611246806200d69d83390190565b610113806200e8e383390190565b61237a806200e9f683390190565b61013c8062010d7083390190565b6108098062010eac83390190565b61020080620116b583390190565b610d0680620118b583390190565b6153a280620125bb83390190565b508054600082559060005260206000209081019062000a8291905b808211156200beb057600081556001016200be9a565b5090565b6000602082840312156200bec757600080fd5b5035919050565b60005b838110156200beeb5781810151838201526020016200bed1565b50506000910152565b600081518084526200bf0e8160208601602086016200bece565b601f01601f19169290920160200192915050565b6001600160a01b0384168152826020820152606060408201526000620059d460608301846200bef4565b600080604083850312156200bf6057600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156200bfaa5781516001600160a01b0316875295820195908201906001016200bf83565b509495945050505050565b6020815260006200259b60208301846200bf6f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200c020576200c0206200bfca565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200c052576200c0526200bfca565b604052919050565b600067ffffffffffffffff8211156200c077576200c0776200bfca565b5060051b60200190565b600082601f8301126200c09357600080fd5b813560206200c0ac6200c0a6836200c05a565b6200c026565b82815260059290921b840181019181810190868411156200c0cc57600080fd5b8286015b8481101562007f2457803583529183019183016200c0d0565b6000602082840312156200c0fc57600080fd5b813567ffffffffffffffff8111156200c11457600080fd5b620082f6848285016200c081565b63ffffffff8116811462000a8257600080fd5b600080604083850312156200c14957600080fd5b82356200c156816200c122565b946020939093013593505050565b6000806000606084860312156200c17a57600080fd5b83359250602084013567ffffffffffffffff8111156200c19957600080fd5b6200c1a7868287016200c081565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200c296578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200c2805783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200c23c565b50978a019795505050918701916001016200c1e0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200c31c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200c3098583516200bef4565b945092850192908501906001016200c2cc565b5092979650505050505050565b600080604083850312156200c33d57600080fd5b823567ffffffffffffffff8111156200c35557600080fd5b6200c363858286016200c081565b95602094909401359450505050565b600081518084526020808501945080840160005b838110156200bfaa578151875295820195908201906001016200c386565b6020815260006200259b60208301846200c372565b6000806000606084860312156200c3cf57600080fd5b83356200c3dc816200c122565b925060208401356200c3ee816200c122565b915060408401356200c400816200c122565b809150509250925092565b600080600080600060a086880312156200c42457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111562003db75762003db76200c447565b808202811582820484141762003db75762003db76200c447565b6001600160a01b038151168252602081015160208301526000604082015160606040850152620082f660608501826200bef4565b6001600160a01b03851681526080602082015260006200c4fe60808301866200c4a6565b82810360408401526200c51281866200bef4565b905082810360608401526200a06781856200c372565b6001600160a01b038116811462000a8257600080fd5b805162003f04816200c528565b805162003f04816200c122565b8051801515811462003f0457600080fd5b600061018082840312156200c57d57600080fd5b6200c5876200bff9565b90506200c594826200c53e565b81526200c5a4602083016200c53e565b60208201526200c5b7604083016200c53e565b604082015260608201516060820152608082015160808201526200c5de60a083016200c54b565b60a082015260c082015160c082015260e082015160e08201526101008083015181830152506101206200c6138184016200c558565b9082015261014082810151908201526101609182015191810191909152919050565b6000806101a083850312156200c64a57600080fd5b6200c65684846200c569565b915061018083015167ffffffffffffffff808211156200c67557600080fd5b818501915085601f8301126200c68a57600080fd5b8151818111156200c69f576200c69f6200bfca565b6200c6b46020601f19601f840116016200c026565b91508082528660208285010111156200c6cc57600080fd5b6200c6df8160208401602086016200bece565b5080925050509250929050565b600181811c908216806200c70157607f821691505b6020821081036200c73b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b63ffffffff8181168382160280821691908281146200c764576200c7646200c447565b505092915050565b8181038181111562003db75762003db76200c447565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826200c7c3576200c7c36200c782565b500690565b81516001600160a01b03168152610140810160208301516200c7f560208401826001600160a01b03169052565b5060408301516200c81160408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b60006001600160a01b03808816835280871660208401525084604083015260a060608301526200c89660a08301856200bef4565b82810360808401526200c8aa81856200bef4565b98975050505050505050565b600061018082840312156200c8ca57600080fd5b6200259b83836200c569565b6020815260006200259b60208301846200bef4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156200c92d57600080fd5b5051919050565b63ffffffff81811683821601908082111562006c4a5762006c4a6200c447565b6020815260006200259b60208301846200c4a6565b828152604060208201526000620082f660408301846200bef4565b6000602082840312156200c99757600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146200259b57600080fd5b63ffffffff82811682821603908082111562006c4a5762006c4a6200c447565b6000602082840312156200c9fb57600080fd5b81516200259b816200c528565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200ca448160048501602087016200bece565b919091016004019392505050565b600082516200ca668184602087016200bece565b9190910192915050565b6000602082840312156200ca8357600080fd5b6200259b826200c558565b60006102606001600160a01b03808c168452808b166020850152508860408401528760608401528660808401528060a08401526200cacf818401876200bef4565b905082810360c08401526200cae581866200bef4565b9150506200caff60e0830184516001600160a01b03169052565b60208301516101006200cb1c818501836001600160a01b03169052565b604085015191506101206200cb3b818601846001600160a01b03169052565b60608601516101408681019190915260808701516101608088019190915260a088015163ffffffff1661018088015260c08801516101a088015260e08801516101c0880152928701516101e0870152908601511515610200860152850151610220850152909301516102409092019190915298975050505050505050565b6000815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015620059dd5760049290920360031b82901b161692915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200cc3a576200cc3a6200c447565b5060010190565b6000826200cc53576200cc536200c782565b500490565b601f82111562002e5357600081815260208120601f850160051c810160208610156200cc815750805b601f850160051c820191505b8181101562000bf3578281556001016200cc8d565b815167ffffffffffffffff8111156200ccbf576200ccbf6200bfca565b6200ccd7816200ccd084546200c6ec565b846200cc58565b602080601f8311600181146200cd2d57600084156200ccf65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855562000bf3565b600085815260208120601f198616915b828110156200cd5e578886015182559484019460019091019084016200cd3d565b50858210156200cd9b57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152815160408201526000602083015160406060840152620059d460808401826200bef4565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b168152600082516200ce188160148501602087016200bece565b919091016014019392505050565b6000826060808201846000805b60038110156200cece578584038952825180518086526020918201918087019190600582901b88018101865b838110156200ceb657898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c90526200cea28c8401826200bef4565b96840196958401959250506001016200ce5f565b509c81019c975095909501945050506001016200ce33565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b838110156200cf215781516001600160a01b0316855293820193908201906001016200cefa565b5050868303818801526200cf36838b6200c372565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b838110156200d01357601f198884030185528151610160815185528782015188860152888201516200cf988a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e0808301519086015261010080830151908601526101208083015190860152610140918201519185018190526200cffe818601836200bef4565b9688019694505050908501906001016200cf5c565b505089810360608b01526200d029818c6200ce26565b9e9d5050505050505050505050505050565b6040815260006200d07960408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200d07960408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6040815260006200d10360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200d10360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200259b60808301846200bef4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106200d237577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c60208501528160408501526200d2678285018d6200bef4565b92506200d278606085018c6200d1ff565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200d2c68184602088016200bece565b8351908301906200d2dc8183602088016200bece565b01949350505050565b60006101406001600160a01b03808e1684528c60208501528160408501526200d3118285018d6200bef4565b91506200d322606085018c6200d1ff565b8960808501528860a08501528760c085015280871660e0850152808616610100850152508281036101208401526200d35b81856200bef4565b9d9c50505050505050505050505050565b6040815260006200d38160408301856200c4a6565b905082151560208301529392505050565b6000806000606084860312156200d3a857600080fd5b835160ff811681146200d3ba57600080fd5b602085015160409095015190969495509392505050565b6080815260006200d3e660808301876200c4a6565b6001600160a01b038616602084015282810360408401526200d40981866200bef4565b915050821515606083015295945050505050565b6040815260006200d43260408301856200bef4565b90508260208301529392505050565b6001600160a01b0383168152604060208201526000620082f660408301846200bef4565b60006101008083526200d47b8184018b6200bf6f565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200d4f360608301856200bef4565b9050826040830152949350505050565b6040815260006200d54160408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620082f681856200bef4565b6040815260006200d54160408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b825160009082906020808701845b838110156200d5bf578151855293820193908201906001016200d5a1565b5050948252509092019392505050565b600082601f8301126200d5e157600080fd5b815160206200d5f46200c0a6836200c05a565b82815260059290921b840181019181810190868411156200d61457600080fd5b8286015b8481101562007f2457805183529183019183016200d618565b600080604083850312156200d64557600080fd5b825167ffffffffffffffff808211156200d65e57600080fd5b6200d66c868387016200d5cf565b935060208501519150808211156200d68357600080fd5b506200d692858286016200d5cf565b915050925092905056fe60a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b5060f48061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603f60383660046051565b4292915050565b60405190815260200160405180910390f35b60008060208385031215606357600080fd5b823567ffffffffffffffff80821115607a57600080fd5b818501915085601f830112608d57600080fd5b813581811115609b57600080fd5b86602082850101111560ac57600080fd5b6020929092019691955090935050505056fea2646970667358221220ab263683a024250b9359febe188378c982b794bc2b7730ab221465e360593e4e64736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c634300081300335457415020736166652062757920746f6b656e2062616c616e636520697320696e636f7272656374426f622062757920746f6b656e2062616c616e636520697320696e636f7272656374426f622073656c6c20746f6b656e2062616c616e636520697320696e636f72726563745457415020736166652073656c6c20746f6b656e2062616c616e636520697320696e636f72726563744e756d626572206f66207365636f6e64732070726f63657373656420697320696e636f7272656374a2646970667358221220236a1933c50a3f53a72b181af54387d1a68d19e78c0d29930dbc9d719317226c64736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c6343000813003360806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"1171:27655:114:-:0;;;1572:26:26;;;1594:4;-1:-1:-1;;1572:26:26;;;;;;;;3288:44:30;;;;;;;;;;;1171:27655:114;;;;;;;;;;1168:10:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1156:9:116;:22;;-1:-1:-1;;;;;;1156:22:116;-1:-1:-1;;;;;1156:22:116;;;;;;;;;;1198;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1188:7:116;:32;;-1:-1:-1;;;;;;1188:32:116;-1:-1:-1;;;;;1188:32:116;;;;;;;;;;1240:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1230:7:116;:44;;-1:-1:-1;;;;;;1230:44:116;-1:-1:-1;;;;;1230:44:116;;;;;;;;;;1334:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:8:116;:42;;-1:-1:-1;;;;;;1323:42:116;-1:-1:-1;;;;;1323:42:116;;;;;;;;;;1387:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1375:9:116;:27;;-1:-1:-1;;;;;;1375:27:116;-1:-1:-1;;;;;1375:27:116;;;;;;;;;;1429:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1412:14:116;:37;;-1:-1:-1;;;;;;1412:37:116;-1:-1:-1;;;;;1412:37:116;;;;;;;;;;875:30:117;;;;;:::i;:::-;317:2:122;299:21;;;356:1;336:18;;;329:29;-1:-1:-1;;;389:2:122;374:18;;367:37;442:3;435:4;420:20;;413:33;;;483:1;462:19;;;455:30;-1:-1:-1;;;516:3:122;501:19;;494:33;559:3;544:19;875:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:6:117;:56;;-1:-1:-1;;;;;;851:56:117;-1:-1:-1;;;;;851:56:117;;;;;;;;;;941:30;;;;;:::i;:::-;877:2:122;859:21;;;916:1;896:18;;;889:29;-1:-1:-1;;;949:2:122;934:18;;927:37;1002:3;995:4;980:20;;973:33;;;1043:1;1022:19;;;1015:30;-1:-1:-1;;;1076:3:122;1061:19;;1054:33;1119:3;1104:19;941:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;917:6:117;:56;;-1:-1:-1;;;;;;917:56:117;-1:-1:-1;;;;;917:56:117;;;;;;;;;;1007:30;;;;;:::i;:::-;1437:2:122;1419:21;;;1476:1;1456:18;;;1449:29;-1:-1:-1;;;1509:2:122;1494:18;;1487:37;1562:3;1555:4;1540:20;;1533:33;;;1603:1;1582:19;;;1575:30;-1:-1:-1;;;1636:3:122;1621:19;;1614:33;1679:3;1664:19;1007:30:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;983:6:117;:56;;-1:-1:-1;;;;;;983:56:117;-1:-1:-1;;;;;983:56:117;;;;;;;;;;1171:27655:114;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;1134:555:122:-;1171:27655:114;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620003b55760003560e01c8063ab5b084211620001f9578063c80916d41162000119578063e20c9f7111620000af578063f7213db61162000086578063f7213db614620007d4578063fa7626d414620007f7578063fbfa77cf1462000805578063ff6fd6dd146200081957600080fd5b8063e20c9f71146200079c578063e27d515314620007a6578063e4d3ab9914620007bd57600080fd5b8063d21220a711620000f0578063d21220a71462000746578063dd1d2599146200075a578063dfe274a91462000771578063e2052305146200078557600080fd5b8063c80916d41462000711578063cd36c9141462000725578063cf06c7b7146200072f57600080fd5b8063b8616195116200018f578063c3fe505c1162000166578063c3fe505c14620006c5578063c45a015514620006dc578063c50985fb14620006f0578063c522bb6e146200070757600080fd5b8063b8616195146200067e578063ba414fa614620006a4578063bbba172114620006ae57600080fd5b8063b3d79d0c11620001d0578063b3d79d0c146200063f578063b5508aa91462000656578063b62654fb1462000660578063b716db66146200067457600080fd5b8063ab5b084214620005fd578063ad9b04751462000614578063b081cb18146200062857600080fd5b80633e5e3c2311620002e557806366d9a9a0116200027b57806385226c81116200025257806385226c8114620005af578063916a17c614620005c85780639c02039914620005d25780639fbcc9ad14620005e957600080fd5b806366d9a9a0146200056e5780637d499aa414620005875780638406c079146200059b57600080fd5b806350bcf4ca11620002bc57806350bcf4ca146200050457806351160630146200051b57806358161a42146200052f5780635ab3c27d146200055757600080fd5b80633e5e3c2314620004e65780633f7286f414620004f057806348c72e2914620004fa57600080fd5b806319f98a58116200035b57806327f72eb3116200033257806327f72eb3146200048b578063294402cc14620004a25780632e08d60214620004b6578063329696ac14620004dc57600080fd5b806319f98a5814620004545780631ed7831c146200045e57806325be124e146200047757600080fd5b80630ef28fec11620003905780630ef28fec146200040b578063151bcd2c146200041557806316805336146200043d57600080fd5b80630a9254e414620003ba5780630c8548f514620003c65780630dfe168114620003f7575b600080fd5b620003c462000830565b005b603354620003da906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b602154620003da906001600160a01b031681565b620003c462000a85565b6200042c620004263660046200beb4565b62000bfb565b604051620003ee939291906200bf22565b620003c46200044e3660046200bf4c565b62000cb8565b620003c46200130d565b620004686200151a565b604051620003ee91906200bfb5565b602354620003da906001600160a01b031681565b620003c46200049c3660046200bf4c565b6200157e565b601f54620003da906001600160a01b031681565b620004cd620004c73660046200c0e9565b62001706565b604051908152602001620003ee565b620003c4620017e2565b62000468620018f0565b6200046862001952565b620003c4620019b4565b620003c4620005153660046200c135565b62001c56565b602554620003da906001600160a01b031681565b62000546620005403660046200c164565b6200254f565b6040519015158152602001620003ee565b620003c4620005683660046200bf4c565b620025a2565b62000578620028e9565b604051620003ee91906200c1b8565b603254620003da906001600160a01b031681565b602a54620003da906001600160a01b031681565b620005b9620029f1565b604051620003ee91906200c2a5565b6200057862002acb565b620003c4620005e33660046200beb4565b62002bca565b601e54620003da906001600160a01b031681565b620003c46200060e3660046200bf4c565b62002e58565b603154620003da906001600160a01b031681565b620003c4620006393660046200beb4565b620032fd565b620003c4620006503660046200bf4c565b62003401565b620005b9620039cf565b601b54620003da906001600160a01b031681565b620003c462003aa9565b620006956200068f3660046200c329565b62003be5565b604051620003ee91906200c3a4565b6200054662003dbd565b620003c4620006bf3660046200bf4c565b62003f09565b620003c4620006d63660046200bf4c565b62004497565b601c54620003da906001600160a01b031681565b620003c4620007013660046200c3b9565b6200486f565b620003c462005730565b601d54620003da906001600160a01b031681565b620003c4620057c9565b620004cd620007403660046200beb4565b62005874565b602254620003da906001600160a01b031681565b620004cd6200076b3660046200bf4c565b620059e5565b602054620003da906001600160a01b031681565b620003c4620007963660046200bf4c565b62005a15565b6200046862005d72565b620004cd620007b73660046200beb4565b62005dd4565b620003c4620007ce3660046200c40b565b62005e01565b620004cd620007e53660046200beb4565b60476020526000908152604090205481565b600054620005469060ff1681565b602454620003da906001600160a01b031681565b620003c46200082a3660046200beb4565b6200620d565b6200083a62006326565b6034546040516001600160a01b039091169062000857906200be0f565b6001600160a01b039091168152602001604051809103906000f08015801562000884573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620008cb906200be1d565b604051809103906000f080158015620008e8573d6000803e3d6000fd5b50604680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556200093a6200093442620151806200c476565b620066a6565b8051603a80547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03938416179091556020830151603b80548316918416919091179055604080840151603c8054909316908416179091556060830151603d556080830151603e5560a0830151603f5560c0830151905560e082015160415561010082015160425561012090910151604355602154603154620009f69291821691166905150ae84a8cdf000000620067c1565b6031546040805161014081018252603a546001600160a01b03908116808352603b5482166020840152603c54821683850152603d5460608401819052603e546080850152603f5460a0850152935460c0840181905260415460e085015260425461010085015260435461012085015262000a82959290921693909162000a7c916200c48c565b620067d0565b50565b60315460009062000aa1906001600160a01b03166032620069bf565b90506000808062000abd848260396200170662003be562006c51565b92509250925062000b09603160009054906101000a90046001600160a01b0316846040518060400160405280600081526020016040518060200160405280600081525081525062006f42565b60345460315460408051602081018252600080825291517f26e0a196000000000000000000000000000000000000000000000000000000008152919384936001600160a01b03918216936326e0a1969362000b6f939092169188918a906004016200c4da565b600060405180830381865afa15801562000b8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bb791908101906200c635565b60315460408051808201909152602d546001600160a01b039081168252602e54602083015293955091935062000bf392169084846000620071bb565b505050505050565b6039602052600090815260409020805460018201546002830180546001600160a01b0390931693919262000c2f906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462000c5d906200c6ec565b801562000cae5780601f1062000c825761010080835404028352916020019162000cae565b820191906000526020600020905b81548152906001019060200180831162000c9057829003601f168201915b5050505050905083565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000d0957600080fd5b505afa15801562000d1e573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000d7357600080fd5b505afa15801562000d88573d6000803e3d6000fd5b5050604051632631f2b160e11b81528385106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000dd957600080fd5b505afa15801562000dee573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062000e1e90506018610e106200c741565b62000e309063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b15801562000e8057600080fd5b505afa15801562000e95573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e1062000ec886866200c76c565b62000ed491906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152911115600482015260240160006040518083038186803b15801562000f2457600080fd5b505afa15801562000f39573d6000803e3d6000fd5b50505050600062000f4a83620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000fb457600080fd5b505af115801562000fc9573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc491506000908190819062000ffc9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200105095949392906004016200c862565b61018060405180830381865afa1580156200106f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200109591906200c8b6565b506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620010fd57600080fd5b505af115801562001112573d6000803e3d6000fd5b5050604080518082018252600f81527f6e6f742077697468696e207370616e000000000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162001197916024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200120b916004016200c8d6565b600060405180830381600087803b1580156200122657600080fd5b505af11580156200123b573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc49150600090819081906200126e9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620012c295949392906004016200c862565b61018060405180830381865afa158015620012e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200130791906200c8b6565b50505050565b60006200131a42620066a6565b60006080820152604080518082018252601681527f696e76616c6964206d696e2070617274206c696d69740000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a691906024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200141a916004016200c8d6565b600060405180830381600087803b1580156200143557600080fd5b505af11580156200144a573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc49150600090819081906200147d9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620014d195949392906004016200c862565b61018060405180830381865afa158015620014f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151691906200c8b6565b5050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200157457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001555575b5050505050905090565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e5628315801590620015ac57506301e133808411155b6040518263ffffffff1660e01b8152600401620015cd911515815260200190565b60006040518083038186803b158015620015e657600080fd5b505afa158015620015fb573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200164c57600080fd5b505afa15801562001661573d6000803e3d6000fd5b5050505060006200167242620066a6565b60e081018490526101008101839052604080518082018252600c81527f696e76616c6964207370616e000000000000000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc272500000000000000000000000000000000000000000000000000000000916200119791906024016200c8d6565b600060018251116200179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600182511115620017bd57620017b58262007ae9565b91506200179f565b81600081518110620017d357620017d36200c8eb565b60200260200101519050919050565b603454604080517ff698da250000000000000000000000000000000000000000000000000000000081529051620018ee926001600160a01b03169163f698da259160048083019260209291908290030181865afa15801562001848573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200186e91906200c91a565b602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018e891906200c91a565b62007c75565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001574576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001555575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001574576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001555575050505050905090565b6000620019c142620066a6565b60008152604080518082018252600d81527f696e76616c696420746f6b656e0000000000000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162001a4a91906024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262001abe916004016200c8d6565b600060405180830381600087803b15801562001ad957600080fd5b505af115801562001aee573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc491506000908190819062001b219087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262001b7595949392906004016200c862565b61018060405180830381865afa15801562001b94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bba91906200c8b6565b506021546001600160a01b031681526000602080830191909152604080518082018252600d81527f696e76616c696420746f6b656e000000000000000000000000000000000000009281019290925251737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a6916024016200c8d6565b604051632631f2b160e11b815263ffffffff838116106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001ca957600080fd5b505afa15801562001cbe573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001d1357600080fd5b505afa15801562001d28573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff851684116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001d7f57600080fd5b505afa15801562001d94573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062001dc490506018610e106200c741565b62001dd090856200c934565b63ffffffff1683106040518263ffffffff1660e01b815260040162001df9911515815260200190565b60006040518083038186803b15801562001e1257600080fd5b505afa15801562001e27573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e1062001e6063ffffffff8716866200c76c565b62001e6c91906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529111600482015260240160006040518083038186803b15801562001ebb57600080fd5b505afa15801562001ed0573d6000803e3d6000fd5b50505050600062001ee26000620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815263ffffffff85166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562001f5157600080fd5b505af115801562001f66573d6000803e3d6000fd5b5050603154835160c085015160608601516000955062001fbf94506001600160a01b039093169286929162001f9b916200c48c565b6046546040805160208101909152600081526001600160a01b039091169062007d87565b6034546031546040517f5500079d000000000000000000000000000000000000000000000000000000008152929350620020f8926001600160a01b0392831692631c7662c89216908390635500079d906200201f9088906004016200c954565b602060405180830381865afa1580156200203d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206391906200c91a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015620020c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020eb91906200c91a565b63ffffffff861662007c75565b603454603154604080516020808201835260008083528351818152918201938490527f26e0a19600000000000000000000000000000000000000000000000000000000909352919384936001600160a01b03918216936326e0a196936200216993909216918891602481016200c4da565b600060405180830381865afa15801562002187573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620021b191908101906200c635565b603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062002375937f1626ba7e00000000000000000000000000000000000000000000000000000000936001600160a01b0393841693631626ba7e93620022e8938a93929091169163f698da259160048083019260209291908290030181865afa15801562002256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200227c91906200c91a565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856040518363ffffffff1660e01b8152600401620023089291906200c969565b602060405180830381865afa15801562002326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200234c91906200c984565b7fffffffff00000000000000000000000000000000000000000000000000000000161462007f2f565b6031546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620023e857600080fd5b505af1158015620023fd573d6000803e3d6000fd5b505050506000836040516020016200241691906200c954565b60408051808303601f190181529082905280516020909101206034547f95bc2673000000000000000000000000000000000000000000000000000000008352600483018290529092506001600160a01b0316906395bc267390602401600060405180830381600087803b1580156200248d57600080fd5b505af1158015620024a2573d6000803e3d6000fd5b50506034546031546040517f1c7662c80000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905262002546945091169150631c7662c890604401602060405180830381865afa15801562002518573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200253e91906200c91a565b600062007c75565b50505050505050565b81516000908290825b81811015620025945762002589838783815181106200257b576200257b6200c8eb565b6020026020010151620059e5565b925060010162002558565b5050841490505b9392505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562620025ce610e1063ffffffff6200c9c8565b63ffffffff1684106040518263ffffffff1660e01b8152600401620025f7911515815260200190565b60006040518083038186803b1580156200261057600080fd5b505afa15801562002625573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200267657600080fd5b505afa1580156200268b573d6000803e3d6000fd5b5050505060006200269c83620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200270657600080fd5b505af11580156200271b573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc49150600090819081906200274e9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620027a295949392906004016200c862565b61018060405180830381865afa158015620027c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027e791906200c8b6565b506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200284f57600080fd5b505af115801562002864573d6000803e3d6000fd5b5050604080518082018252601181527f6265666f7265207477617020737461727400000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162001197916024016200c8d6565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620029e85760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029cf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200297b5790505b505050505081525050815260200190600101906200290d565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620029e857838290600052602060002001805462002a37906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462002a65906200c6ec565b801562002ab65780601f1062002a8a5761010080835404028352916020019162002ab6565b820191906000526020600020905b81548152906001019060200180831162002a9857829003601f168201915b50505050508152602001906001019062002a15565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620029e85760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002bb157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002b5d5790505b5050505050815250508152602001906001019062002aef565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562600183108062002bf757506301e1338083115b6040518263ffffffff1660e01b815260040162002c18911515815260200190565b60006040518083038186803b15801562002c3157600080fd5b505afa15801562002c46573d6000803e3d6000fd5b50505050600062002c5742620066a6565b60e08101839052604080518082018252601181527f696e76616c6964206672657175656e637900000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162002ce391906024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825262002d57916004016200c8d6565b600060405180830381600087803b15801562002d7257600080fd5b505af115801562002d87573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc491506000908190819062002dba9087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815262002e0e95949392906004016200c862565b61018060405180830381865afa15801562002e2d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e5391906200c8b6565b505050565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002ea957600080fd5b505afa15801562002ebe573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002f1357600080fd5b505afa15801562002f28573d6000803e3d6000fd5b5050604051632631f2b160e11b81528385106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002f7957600080fd5b505afa15801562002f8e573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062002fbe90506018610e106200c741565b62002fd09063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b1580156200302057600080fd5b505afa15801562003035573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e106200306886866200c76c565b6200307491906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529111600482015260240160006040518083038186803b158015620030c357600080fd5b505afa158015620030d8573d6000803e3d6000fd5b505050506000620030e983620066a6565b603154815160c083015160608401519394506000936200311d936001600160a01b0316928692909162000a7c91906200c48c565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200318757600080fd5b505af11580156200319c573d6000803e3d6000fd5b5050603454603154604080516020808201835260008083528351818152918201938490527f26e0a196000000000000000000000000000000000000000000000000000000009093529195508594506001600160a01b03938416936326e0a1969362003210939116918891602481016200c4da565b600060405180830381865afa1580156200322e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200325891908101906200c635565b603154602554604080517ff698da25000000000000000000000000000000000000000000000000000000008152905194965092945062000bf3937f1626ba7e00000000000000000000000000000000000000000000000000000000936001600160a01b0393841693631626ba7e93620022e8938a93929091169163f698da259160048083019260209291908290030181865afa15801562002256573d6000803e3d6000fd5b604051632631f2b160e11b815263ffffffff8210156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200334f57600080fd5b505afa15801562003364573d6000803e3d6000fd5b5050505060006200337582620066a6565b60a08101839052604080518082018252601281527f696e76616c69642073746172742074696d65000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162002ce391906024016200c8d6565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200345257600080fd5b505afa15801562003467573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620034bc57600080fd5b505afa158015620034d1573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291506200350190506018610e106200c741565b620035139063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908411600482015260240160006040518083038186803b1580156200356357600080fd5b505afa15801562003578573d6000803e3d6000fd5b5050505060006200358a6000620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620035f457600080fd5b505af115801562003609573d6000803e3d6000fd5b5050603154835160c08501516060860151600095506200363e94506001600160a01b039093169286929162001f9b916200c48c565b6034546031546040517f5500079d00000000000000000000000000000000000000000000000000000000815292935062003771926001600160a01b0392831692631c7662c89216908390635500079d906200369e9088906004016200c954565b602060405180830381865afa158015620036bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036e291906200c91a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562003744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200376a91906200c91a565b8562007c75565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620037d857600080fd5b505af1158015620037ed573d6000803e3d6000fd5b5050604080518082018252601181527f616674657220747761702066696e69736800000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162003872916024016200c8d6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620038e6916004016200c8d6565b600060405180830381600087803b1580156200390157600080fd5b505af115801562003916573d6000803e3d6000fd5b5050603454603154604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b0393841695506326e0a19694506200398793909216918691602481016200c4da565b600060405180830381865afa158015620039a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bf391908101906200c635565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620029e857838290600052602060002001805462003a15906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462003a43906200c6ec565b801562003a945780601f1062003a685761010080835404028352916020019162003a94565b820191906000526020600020905b81548152906001019060200180831162003a7657829003601f168201915b505050505081526020019060010190620039f3565b601e54603154602554604080517ff698da250000000000000000000000000000000000000000000000000000000081529051620018ee946001600160a01b03908116946351cad5ee949082169391169163f698da25916004808201926020929091908290030181865afa15801562003b25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b4b91906200c91a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801562003bad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bd391906200c9e8565b6034546001600160a01b031662007fa7565b6060600183511162003c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c65616600000000000000000000000000000000000000000000000000000000606482015260840162001796565b600062003c87845162005874565b67ffffffffffffffff81111562003ca25762003ca26200bfca565b60405190808252806020026020018201604052801562003ccc578160200160208202803683370190505b50905060005b60018551111562003db3578360011660010362003d305784600185038151811062003d015762003d016200c8eb565b602002602001015182828151811062003d1e5762003d1e6200c8eb565b60200260200101818152505062003d97565b8451846001010362003d55576000801b82828151811062003d1e5762003d1e6200c8eb565b84846001018151811062003d6d5762003d6d6200c8eb565b602002602001015182828151811062003d8a5762003d8a6200c8eb565b6020026020010181815250505b60010160028404935062003dab8562007ae9565b945062003cd2565b5090505b92915050565b60008054610100900460ff161562003dde5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562003f045760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162003e86917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200ca08565b60408051601f198184030181529082905262003ea2916200ca52565b6000604051808303816000865af19150503d806000811462003ee1576040519150601f19603f3d011682016040523d82523d6000602084013e62003ee6565b606091505b509150508080602001905181019062003f0091906200ca70565b9150505b919050565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003f5a57600080fd5b505afa15801562003f6f573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003fc457600080fd5b505afa15801562003fd9573d6000803e3d6000fd5b5050604051632631f2b160e11b81528385106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200402a57600080fd5b505afa1580156200403f573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291506200406f90506018610e106200c741565b620040819063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908410600482015260240160006040518083038186803b158015620040d157600080fd5b505afa158015620040e6573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915061012c9050610e106200411986866200c76c565b6200412591906200c7b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681529111600482015260240160006040518083038186803b1580156200417457600080fd5b505afa15801562004189573d6000803e3d6000fd5b5050505060006200419a83620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200420457600080fd5b505af115801562004219573d6000803e3d6000fd5b5050603854604051600093506001600160a01b03909116915063b8296fc4908390819081906200424e9088906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620042a295949392906004016200c862565b61018060405180830381865afa158015620042c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042e791906200c8b6565b90506000603460009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200433f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200436591906200c91a565b6038549091506001600160a01b03166314a2a784600080620043ee8686601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b856000801b896040516020016200440691906200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526200445e979695949392908c906004016200ca8e565b60006040518083038186803b1580156200447757600080fd5b505afa1580156200448c573d6000803e3d6000fd5b505050505050505050565b604051632631f2b160e11b815263ffffffff8311156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620044e957600080fd5b505afa158015620044fe573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff8411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200455457600080fd5b505afa15801562004569573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291506200459990506018610e106200c741565b620045ab9063ffffffff16856200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815290841015600482015260240160006040518083038186803b158015620045fc57600080fd5b505afa15801562004611573d6000803e3d6000fd5b5050505060006200462283620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200468c57600080fd5b505af1158015620046a1573d6000803e3d6000fd5b50506038546040516001600160a01b03909116925063b8296fc4915060009081908190620046d49087906020016200c7c8565b60408051601f198184030181526020830182526000835290517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526200472895949392906004016200c862565b61018060405180830381865afa15801562004747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200476d91906200c8b6565b506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620047d557600080fd5b505af1158015620047ea573d6000803e3d6000fd5b5050604080518082018252601181527f616674657220747761702066696e69736800000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162001197916024016200c8d6565b604051632631f2b160e11b815263ffffffff838116908316106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620048c557600080fd5b505afa158015620048da573d6000803e3d6000fd5b50505050620048f88363ffffffff16600263ffffffff8016620080b9565b9250620049148263ffffffff16607863ffffffff8016620080b9565b9150737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56263ffffffff8316156200499a576138406200494c84866200c9c8565b63ffffffff168663ffffffff166200496591906200c48c565b620049729060036200c48c565b6200498763ffffffff8087169089166200c48c565b6200499391906200c476565b10620049b4565b610e10620049b263ffffffff8087169088166200c48c565b105b6040518263ffffffff1660e01b8152600401620049d5911515815260200190565b60006040518083038186803b158015620049ee57600080fd5b505afa15801562004a03573d6000803e3d6000fd5b50505050600062004a1442620066a6565b63ffffffff80861660c0830181905285821660e08401529084166101008301528151603154606084015193945062004a669391926001600160a01b039091169162004a6091906200c48c565b620067c1565b6020810151602d5460c0830151608084015162004a9393926001600160a01b03169162004a60916200c48c565b80516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562004afd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b2391906200c91a565b60208301516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562004b91573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bb791906200c91a565b8351602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562004c22573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c4891906200c91a565b6020850151602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562004cb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cdc91906200c91a565b603154865160c0880151606089015193945060009362004d10936001600160a01b0316928a92909162000a7c91906200c48c565b60a08701516040517fe5d6bf020000000000000000000000000000000000000000000000000000000081529192506000918291737109709ecfa91a80626ff3989d68f67f5b1dd12d9163e5d6bf029162004d709160040190815260200190565b600060405180830381600087803b15801562004d8b57600080fd5b505af115801562004da0573d6000803e3d6000fd5b5050505060008860e001518960c0015162004dbc91906200c48c565b8960a0015162004dcd91906200c476565b90505b603454603154604080516020808201835260008083528351908152908101928390527f26e0a196000000000000000000000000000000000000000000000000000000009092526001600160a01b03938416936326e0a1969362004e3c939116918991602481016200c4da565b600060405180830381865afa92505050801562004e7d57506040513d6000823e601f3d908101601f1916820160405262004e7a91908101906200c635565b60015b620050a0573d80801562004eae576040519150601f19603f3d011682016040523d82523d6000602084013e62004eb3565b606091505b50600062004ec1826200cbb9565b9050824214801562004f1457507fffffffff0000000000000000000000000000000000000000000000000000000081167fc8fc272500000000000000000000000000000000000000000000000000000000145b1562004f22575050620052bc565b8242111562004fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f726465724e6f7456616c696428292073686f756c642068617665206265656e60448201527f207468726f776e00000000000000000000000000000000000000000000000000606482015260840162001796565b63ffffffff8c161580156200500a57507fffffffff0000000000000000000000000000000000000000000000000000000081167fc8fc272500000000000000000000000000000000000000000000000000000000145b1562005098576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f726465724e6f7456616c696428292073686f756c64206e6f7420626520746860448201527f726f776e00000000000000000000000000000000000000000000000000000000606482015260840162001796565b50506200523c565b6000620050fb83602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002256573d6000803e3d6000fd5b600081815260476020526040902054909150158015620051cb57506031546040517f1626ba7e00000000000000000000000000000000000000000000000000000000808252916001600160a01b031690631626ba7e906200516390859087906004016200c969565b602060405180830381865afa15801562005181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051a791906200c984565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b15620052295760315460408051808201909152602d546001600160a01b039081168252602e5460208301526200520792169085856000620071bb565b6000818152604760205260409020600190558562005225816200cc06565b9650505b8462005235816200cc06565b9550505050505b737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf02620052634260016200c476565b6040518263ffffffff1660e01b81526004016200528291815260200190565b600060405180830381600087803b1580156200529d57600080fd5b505af1158015620052b2573d6000803e3d6000fd5b5050505062004dd0565b620053258960e001518a60c00151620052d691906200c48c565b8a60a00151620052e791906200c476565b42146040518060400160405280601c81526020017f54574150206f726465722073686f756c642062652065787069726564000000008152506200810b565b6200538b63ffffffff8b161562005353578961010001518a60c001516200534d91906200c48c565b62005369565b8960e001518a60c001516200536991906200c48c565b8314604051806060016040528060288152602001620179f3602891396200810b565b620053d28960c0015184146040518060400160405280601c81526020017f4e756d626572206f662066696c6c7320697320696e636f7272656374000000008152506200810b565b620054a48960c001518a60600151620053ec91906200c48c565b620053f8908a6200c76c565b8a516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156200545d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200548391906200c91a565b14604051806060016040528060298152602001620179ca602991396200810b565b6200557a8960c001518a60800151620054be91906200c48c565b620054ca90896200c476565b60208b01516031546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801562005532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200555891906200c91a565b10156040518060600160405280602881526020016201795d602891396200810b565b6200564c8960c001518a606001516200559491906200c48c565b620055a090886200c476565b8a51602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801562005605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200562b91906200c91a565b1460405180606001604052806022815260200162017985602291396200810b565b620057228960c001518a608001516200566691906200c48c565b6200567290876200c76c565b60208b0151602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015620056da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200570091906200c91a565b1015604051806060016040528060238152602001620179a7602391396200810b565b505050505050505050505050565b60006200573d42620066a6565b60006060820152604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e74000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a691906024016200c8d6565b6000620057d642620066a6565b6021546001600160a01b0316808252602080830191909152604080518082018252600a81527f73616d6520746f6b656e000000000000000000000000000000000000000000009281019290925251919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc27250000000000000000000000000000000000000000000000000000000091620013a691906024016200c8d6565b6000600182116200588757506000919050565b6000827001000000000000000000000000000000008110620058b857608093841c93620058b590836200c476565b91505b680100000000000000008410620058de57604093841c93620058db90836200c476565b91505b64010000000084106200590057602093841c93620058fd90836200c476565b91505b6201000084106200592057601093841c936200591d90836200c476565b91505b61010084106200593f57600893841c936200593c90836200c476565b91505b601084106200595d57600493841c936200595a90836200c476565b91505b600484106200597b57600293841c936200597890836200c476565b91505b600284106200599457620059916001836200c476565b91505b600081620059a5811960016200c476565b1690508181148015620059b85750600083115b15620059c75750909392505050565b620059d48360016200c476565b95945050505050565b505050919050565b60008183108015620059ff57836000528260205262005a08565b82600052836020525b5050604060002092915050565b604051632631f2b160e11b815263ffffffff83106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562005a6657600080fd5b505afa15801562005a7b573d6000803e3d6000fd5b5050604051632631f2b160e11b815263ffffffff84106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562005ad057600080fd5b505afa15801562005ae5573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562005b3657600080fd5b505afa15801562005b4b573d6000803e3d6000fd5b50505050600062005b5d6000620066a6565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101859052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562005bc757600080fd5b505af115801562005bdc573d6000803e3d6000fd5b5050603154835160c085015160608601516000955062005c1194506001600160a01b039093169286929162001f9b916200c48c565b6034546031546040517f5500079d00000000000000000000000000000000000000000000000000000000815292935062005c71926001600160a01b0392831692631c7662c89216908390635500079d906200369e9088906004016200c954565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562005cd857600080fd5b505af115801562005ced573d6000803e3d6000fd5b5050604080518082018252601181527f6265666f7265207477617020737461727400000000000000000000000000000060208201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392507fc8fc2725000000000000000000000000000000000000000000000000000000009162003872916024016200c8d6565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001574576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001555575050505050905090565b6000808219600101831683145b831562005df957600193841c93919091019062005de1565b900392915050565b604051632631f2b160e11b815263ffffffff8611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562005e5357600080fd5b505afa15801562005e68573d6000803e3d6000fd5b5050505062005e8083600263ffffffff8016620080b9565b925062005e948260016301e13380620080b9565b604051632631f2b160e11b8152818311156004820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562005ee557600080fd5b505afa15801562005efa573d6000803e3d6000fd5b5050604051632631f2b160e11b8152868810156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562005f4c57600080fd5b505afa15801562005f61573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915062005f8e905084866200c48c565b62005f9a90876200c476565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908810600482015260240160006040518083038186803b15801562005fea57600080fd5b505afa15801562005fff573d6000803e3d6000fd5b5050505060008285876200601491906200c76c565b6200602091906200cc41565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56260008490036200604e5760006200605a565b6200605a84866200c76c565b85620060688560016200c476565b6200607491906200c48c565b6200608090896200c476565b6200608c91906200c76c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152908910600482015260240160006040518083038186803b158015620060dc57600080fd5b505afa158015620060f1573d6000803e3d6000fd5b50506040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b1580156200615c57600080fd5b505af115801562006171573d6000803e3d6000fd5b505050506000620061858686868662008155565b905060006001846000036200619c576000620061a8565b620061a885876200c76c565b86620061b68660016200c476565b620061c291906200c48c565b620061ce908a6200c476565b620061da91906200c76c565b620061e691906200c76c565b9050620061f68883101562007f2f565b6200620381831462007f2f565b5050505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56260028310806200623a575063ffffffff83115b6040518263ffffffff1660e01b81526004016200625b911515815260200190565b60006040518083038186803b1580156200627457600080fd5b505afa15801562006289573d6000803e3d6000fd5b5050505060006200629a42620066a6565b60c08101839052604080518082018252601181527f696e76616c6964206e756d20706172747300000000000000000000000000000060208201529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3917fc8fc2725000000000000000000000000000000000000000000000000000000009162002ce391906024016200c8d6565b62006330620082fe565b6025546040516001600160a01b03909116906200634d906200be2b565b6001600160a01b039091168152602001604051809103906000f0801580156200637a573d6000803e3d6000fd5b50603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055603154602554604080517ff698da2500000000000000000000000000000000000000000000000000000000815290516200650294938416936000937f3365582c000000000000000000000000000000000000000000000000000000009391169163f698da25916004808201926020929091908290030181865afa1580156200643b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200646191906200c91a565b60345460405160248101929092526001600160a01b0316604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526000620064eb620086c0565b6031546001600160a01b031694939291906200879a565b60405162006510906200be39565b604051809103906000f0801580156200652d573d6000803e3d6000fd5b50603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162006574906200be47565b604051809103906000f08015801562006591573d6000803e3d6000fd5b50603580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620065d8906200be55565b604051809103906000f080158015620065f5573d6000803e3d6000fd5b50603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556034546040519116906200663e906200be0f565b6001600160a01b039091168152602001604051809103906000f0801580156200666b573d6000803e3d6000fd5b50603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6200671b60405180610140016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600080191681525090565b60408051610140810182526021546001600160a01b039081168252602254166020820152600091810191909152606081016200676360186905150ae84a8cdf0000006200cc41565b815268056bc75e2d631000006020820152604081019390935260186060840152610e10608084015261012c60a08401527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b414260c0909301929092525090565b62002e538383836000620089cd565b604080516060808201835260008083526020830152918101919091526038546040516200687e916001600160a01b0316907f9294e743cfa74bb19889de64df8402afca751b12255b896d7c973195ea70037d90620068339088906020016200c7c8565b60408051601f19818403018152606080840183526000808552602085810191909152938301819052825190810183526001600160a01b03959095168552918401929092529082015290565b90506200688e8582600062008c5a565b6200689b838684620067c1565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200690a57600080fd5b505af11580156200691f573d6000803e3d6000fd5b5050602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052908616925063095ea7b391506044016020604051808303816000875af115801562006990573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069b691906200ca70565b50949350505050565b60408051610140810182526021546001600160a01b03908116825260225416602082015260009181018290526001606082810182905260808301919091524260a0830152600260c0830152610e1060e08301526101008201929092527f45e1f3e13187da2e43361fe0dca614b8f788ee2208999e5b35d0f0e4085b41426101208201528267ffffffffffffffff81111562006a5e5762006a5e6200bfca565b60405190808252806020026020018201604052801562006aad57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162006a7d5790505b50915060005b825181101562006b5c57604080516060810182526038546001600160a01b0316815281516020808201859052919291830191016040516020818303038152906040528051906020012081526020018360405160200162006b1491906200c7c8565b60405160208183030381529060405281525083828151811062006b3b5762006b3b6200c8eb565b6020026020010181905250808062006b53906200cc06565b91505062006ab3565b508051602a54606083015160c084015162006c4a93926000927f095ea7b300000000000000000000000000000000000000000000000000000000926001600160a01b039092169162006baf91906200c48c565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600062006c35620086c0565b6001600160a01b038a1694939291906200879a565b5092915050565b60408051606081810183526000808352602083018190529282018190529060005b885181101562006d415788818151811062006c915762006c916200c8eb565b602002602001015187600062006cc38c858151811062006cb55762006cb56200c8eb565b602002602001015162008f06565b81526020808201929092526040908101600020835181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178155918301516001830155820151600282019062006d2790826200cca2565b50905050808062006d38906200cc06565b91505062006c72565b506000885167ffffffffffffffff81111562006d615762006d616200bfca565b60405190808252806020026020018201604052801562006d8b578160200160208202803683370190505b50905060005b895181101562006de95762006db48a828151811062006cb55762006cb56200c8eb565b82828151811062006dc95762006dc96200c8eb565b60209081029190910101528062006de0816200cc06565b91505062006d91565b50600062006df78262008f55565b9050600062006e09828963ffffffff16565b9050600062006e1c838c8a63ffffffff16565b905060008a6000858e8151811062006e385762006e386200c8eb565b602002602001015181526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201805462006ea4906200c6ec565b80601f016020809104026020016040519081016040528092919081815260200182805462006ed2906200c6ec565b801562006f235780601f1062006ef75761010080835404028352916020019162006f23565b820191906000526020600020905b81548152906001019060200180831162006f0557829003601f168201915b5050509190925250949f939e50909c50919a5050505050505050505050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562006fb157600080fd5b505af115801562006fc6573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200704657600080fd5b505af11580156200705b573d6000803e3d6000fd5b50505050826001600160a01b03167f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e5783836040516200709c9291906200cdab565b60405180910390a26034546040517f1ab0dd9d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631ab0dd9d90620070f190859085906004016200cdab565b600060405180830381600087803b1580156200710c57600080fd5b505af115801562007121573d6000803e3d6000fd5b50506034546040517fa45468760000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015262002e539450909116915063a454687690602401602060405180830381865afa1580156200718e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071b491906200c91a565b8362007c75565b600060405180610180016040528085602001516001600160a01b0316815260200185600001516001600160a01b0316815260200160006001600160a01b0316815260200185608001518152602001856060015181526020018560a0015163ffffffff1681526020018560c001518152602001600081526020017f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc81526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525090506000620073166200730e83602560009054906101000a90046001600160a01b03166001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002256573d6000803e3d6000fd5b879062009076565b86516040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200738b57600080fd5b505af1158015620073a0573d6000803e3d6000fd5b50508351602a5460608601516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303816000875af115801562007418573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200743e91906200ca70565b506040805160028082526060820183526000926020830190803683370190505090508560000151816000815181106200747b576200747b6200c8eb565b60200260200101906001600160a01b031690816001600160a01b031681525050856020015181600181518110620074b657620074b66200c8eb565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090508360600151816000815181106200750c576200750c6200c8eb565b6020026020010181815250508360800151816001815181106200753357620075336200c8eb565b602090810291909101015260408051600280825260608201909252600091816020015b620075c6604051806101600160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600063ffffffff16815260200160008019168152602001600081526020016000815260200160008152602001606081525090565b81526020019060019003908162007556579050509050604051806101600160405280600081526020016001815260200189604001516001600160a01b0316815260200189606001518152602001896080015181526020018960a0015163ffffffff1681526020018960c0015181526020018960e0015181526020016200764e8a6002620091a0565b8152602001896060015181526020018b89604051602001620076729291906200cdd9565b604051602081830303815290604052815250816000815181106200769a576200769a6200c8eb565b6020026020010181905250604051806101600160405280600181526020016000815260200160006001600160a01b0316815260200186606001518152602001866080015181526020018660a0015163ffffffff1681526020018660c0015181526020018660e00151815260200162007714876000620091a0565b81526020018660600151815260200185815250816001815181106200773d576200773d6200c8eb565b602002602001018190525060006040518060600160405280600067ffffffffffffffff8111156200777257620077726200bfca565b604051908082528060200260200182016040528015620077c157816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620077915790505b50815260200160006040519080825280602002602001820160405280156200781857816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620077e85790505b50815260200160006040519080825280602002602001820160405280156200786f57816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200783f5790505b5090526028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620078e857600080fd5b505af1158015620078fd573d6000803e3d6000fd5b5050507fffffffff0000000000000000000000000000000000000000000000000000000088169050620079b5576025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906313d79a0b906200797b9087908790879087906004016200cedb565b600060405180830381600087803b1580156200799657600080fd5b505af1158015620079ab573d6000803e3d6000fd5b5050505062007adc565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000088166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562007a3d57600080fd5b505af115801562007a52573d6000803e3d6000fd5b50506025546040517f13d79a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506313d79a0b915062007aa79087908790879087906004016200cedb565b600060405180830381600087803b15801562007ac257600080fd5b505af115801562007ad7573d6000803e3d6000fd5b505050505b5050505050505050505050565b6060806000835190508060011660010362007ba6576002810460010167ffffffffffffffff81111562007b205762007b206200bfca565b60405190808252806020026020018201604052801562007b4a578160200160208202803683370190505b50915062007b7b84600183038151811062007b695762007b696200c8eb565b60200260200101516000801b620059e5565b8260018451038151811062007b945762007b946200c8eb565b60200260200101818152505062007bf3565b6002810467ffffffffffffffff81111562007bc55762007bc56200bfca565b60405190808252806020026020018201604052801562007bef578160200160208202803683370190505b5091505b6000805b6001830381101562007c6b5762007c3c86828151811062007c1c5762007c1c6200c8eb565b60200260200101518783600101815181106200257b576200257b6200c8eb565b84838151811062007c515762007c516200c8eb565b602090810291909101015260019091019060020162007bf7565b5091949350505050565b80821462001516577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007d039060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998260405162007d3c91906200d03b565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f998160405162007d7591906200d087565b60405180910390a162001516620092ed565b6040805160608082018352600080835260208301529181019190915260385460405162007dea916001600160a01b0316907f9294e743cfa74bb19889de64df8402afca751b12255b896d7c973195ea70037d9062006833908a906020016200c7c8565b905062007dfc87828585600062009434565b62007e09858886620067c1565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562007e7857600080fd5b505af115801562007e8d573d6000803e3d6000fd5b5050602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101889052908816925063095ea7b391506044016020604051808303816000875af115801562007efe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f2491906200ca70565b509695505050505050565b8062000a82577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162007f959060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000a82620092ed565b806001600160a01b0316826001600160a01b03161462001516577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620080479060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200808091906200d0c5565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162007d7591906200d11a565b6000620080c884848462009657565b90506200259b6040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082620098be565b8162001516577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200814291906200d158565b60405180910390a1620015168262007f2f565b60006001841180156200816c575063ffffffff8411155b6200817b576200817b6200d1a1565b6000831180156200819057506301e133808311155b6200819f576200819f6200d1a1565b82821115620081b257620081b26200d1a1565b428511156200822257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526200179691906004016200c8d6565b828402850142106200829557604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526200179691906004016200c8d6565b60008386420381620082ab57620082ab6200c782565b04905082600003620082cb576001848260010102870103915050620082f6565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b620083086200998c565b620083486040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525062009de8565b8051602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602c5560408051808201909152600381527f626f62000000000000000000000000000000000000000000000000000000000091810191909152620083cb9062009de8565b8051602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055602090810151602e5560408051808201909152600581527f6361726f6c000000000000000000000000000000000000000000000000000000918101919091526200844e9062009de8565b8051602f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602090910151603055602154602b54620084ad929182169116683635c9adc5dea00000620067c1565b602254602d54620084d5916001600160a01b039081169116683635c9adc5dea00000620067c1565b60408051600380825260808201909252600091602082016060803683375050602b5482519293506001600160a01b0316918391506000906200851b576200851b6200c8eb565b6001600160a01b039283166020918202929092010152602d548251911690829060019081106200854f576200854f6200c8eb565b6001600160a01b039283166020918202929092010152602f548251911690829060029081106200858357620085836200c8eb565b6001600160a01b039283166020918202929092010152601c54601b54601e54620085bd939283169291821691859160029116600062009f6e565b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e5462008615939283169291821691859160029116600162009f6e565b603280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c54601b54601e546200866c9392831692918216918591600291168162009f6e565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560215460315462000a82929182169116683635c9adc5dea00000620067c1565b604080516002808252606082810190935260009190816020015b6040805180820190915260008082526020820152815260200190600190039081620086da57505060408051808201909152602b546001600160a01b03168152602c54602082015281519192509082906000906200873b576200873b6200c8eb565b60209081029190910181019190915260408051808201909152602d546001600160a01b03168152602e54918101919091528151829060019081106200878457620087846200c8eb565b602002602001018190525062003db7816200a072565b6000866001600160a01b031663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620087db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200880191906200c91a565b90506000876001600160a01b031663d8d11f788888888860008060008060008c6040518b63ffffffff1660e01b8152600401620088489a999897969594939291906200d23b565b602060405180830381865afa15801562008866573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200888c91906200c91a565b905062008899836200a072565b9250606060005b8451811015620089165781620088dc84878481518110620088c557620088c56200c8eb565b60200260200101516200907690919063ffffffff16565b604051602001620088ef9291906200d2b2565b604051602081830303815290604052915080806200890d906200cc06565b915050620088a0565b50886001600160a01b0316636a7612028989898960008060008060008b6040516020016200894591906200ca52565b6040516020818303038152906040526040518b63ffffffff1660e01b81526004016200897b9a999897969594939291906200d2e5565b6020604051808303816000875af11580156200899b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089c191906200ca70565b50505050505050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052915160009287169162008a51916200ca52565b6000604051808303816000865af19150503d806000811462008a90576040519150601f19603f3d011682016040523d82523d6000602084013e62008a95565b606091505b5091505060008180602001905181019062008ab191906200c91a565b905062008b048462008afd8762008af67f70a082310000000000000000000000000000000000000000000000000000000062008aef60058d6200a1a4565b906200a1e2565b906200a21b565b906200a244565b821562000bf35760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290516000916001600160a01b0389169162008b7d91906200ca52565b6000604051808303816000865af19150503d806000811462008bbc576040519150601f19603f3d011682016040523d82523d6000602084013e62008bc1565b606091505b5091505060008180602001905181019062008bdd91906200c91a565b90508286101562008c085762008bf486846200c76c565b62008c0090826200c76c565b905062008c23565b62008c1483876200c76c565b62008c2090826200c476565b90505b620062038162008afd7f18160ddd0000000000000000000000000000000000000000000000000000000062008aef60058d6200a1a4565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562008cc957600080fd5b505af115801562008cde573d6000803e3d6000fd5b50505050801562008dc2576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562008d6557600080fd5b505af115801562008d7a573d6000803e3d6000fd5b50505050826001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf3618360405162008db991906200c954565b60405180910390a25b6034546040517f6bfae1ca0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690636bfae1ca9062008e0f90859085906004016200d36c565b600060405180830381600087803b15801562008e2a57600080fd5b505af115801562008e3f573d6000803e3d6000fd5b505060345460405162002e5393506001600160a01b039091169150636108c53290869062008e729087906020016200c954565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040162008eba9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008ed8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008efe91906200ca70565b60016200a250565b60008160405160200162008f1b91906200c954565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050919050565b606060005b82518110156200906f57600062008f738260016200c476565b90505b8351811015620090595783818151811062008f955762008f956200c8eb565b602002602001015184838151811062008fb25762008fb26200c8eb565b602002602001015111156200904457600084838151811062008fd85762008fd86200c8eb565b6020026020010151905084828151811062008ff75762008ff76200c8eb565b60200260200101518584815181106200901457620090146200c8eb565b602002602001018181525050808583815181106200903657620090366200c8eb565b602002602001018181525050505b8062009050816200cc06565b91505062008f76565b508062009066816200cc06565b91505062008f5a565b5090919050565b60208201516040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260609060009081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015620090f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200911d91906200d392565b6040805160418082526080820190925293965091945092506000919060208201818036833750506040805160208101969096528581019490945250505060f89290921b7fff000000000000000000000000000000000000000000000000000000000000001660608201528151604181830301815260619091019091529392505050565b60007f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc83610100015103620091d3576001175b82610120015115620091e3576002175b7fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea06328361014001510362009219576008176200924a565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce836101400151036200924a57600c175b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce836101600151036200927b576010175b60018260038111156200929257620092926200d1d0565b03620092a15760201762003db7565b6002826003811115620092b857620092b86200d1d0565b03620092c75760401762003db7565b6003826003811115620092de57620092de6200d1d0565b0362003db75760601792915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620094065760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620093a192916020016200ca08565b60408051601f1981840301815290829052620093bd916200ca52565b6000604051808303816000865af19150503d8060008114620093fc576040519150601f19603f3d011682016040523d82523d6000602084013e62009401565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620094a357600080fd5b505af1158015620094b8573d6000803e3d6000fd5b5050505080156200959c576040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156200953f57600080fd5b505af115801562009554573d6000803e3d6000fd5b50505050846001600160a01b03167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361856040516200959391906200c954565b60405180910390a25b6034546040517f0d0d98000000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690630d0d980090620095ed9087908790879087906004016200d3d1565b600060405180830381600087803b1580156200960857600080fd5b505af11580156200961d573d6000803e3d6000fd5b50506034546040516200965093506001600160a01b039091169150636108c53290889062008e729089906020016200c954565b5050505050565b600081831115620096eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840162001796565b828410158015620096fc5750818411155b156200970a5750826200259b565b60006200971884846200c76c565b620097259060016200c476565b9050600385111580156200973857508481115b1562009753576200974a85856200c476565b9150506200259b565b6200978060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200c76c565b8510158015620097ba5750620097b7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200c76c565b81115b15620097f857620097ec857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200c76c565b6200974a90846200c76c565b828511156200985a5760006200980f84876200c76c565b905060006200981f83836200c7b1565b90508060000362009836578493505050506200259b565b60016200984482886200c476565b6200985091906200c76c565b93505050620098b6565b83851015620098b65760006200987186866200c76c565b905060006200988183836200c7b1565b90508060000362009898578593505050506200259b565b620098a481866200c76c565b620098b19060016200c476565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b03168383604051602401620098ea9291906200d41d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc00000000000000000000000000000000000000000000000000000000179052516200994f91906200ca52565b600060405180830381855afa9150503d806000811462000bf3576040519150601f19603f3d011682016040523d82523d6000602084013e62000bf3565b620099cc6040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525062009de8565b8051602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160275560408051808201909152600681527f736f6c76657200000000000000000000000000000000000000000000000000009181019190915262009a4f9062009de8565b8051602880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905560209081015160295560408051808201909152600981527f66616b655661756c7400000000000000000000000000000000000000000000009181019190915262009ad2906200a444565b602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405160009062009b1b906200be63565b604051809103906000f08015801562009b38573d6000803e3d6000fd5b506026546040517f7f7120fe0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250821690637f7120fe90602401600060405180830381600087803b15801562009b9c57600080fd5b505af115801562009bb1573d6000803e3d6000fd5b50506024546040518493506001600160a01b03909116915062009bd4906200be71565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562009c08573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa15801562009c95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009cbb91906200c9e8565b602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562009d5957600080fd5b505af115801562009d6e573d6000803e3d6000fd5b50506028546040517fec58f4b80000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908416925063ec58f4b89150602401600060405180830381600087803b15801562009dd357600080fd5b505af115801562009650573d6000803e3d6000fd5b604080518082019091526000808252602082015260008260405160200162009e1191906200ca52565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562009e96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009ebc91906200c9e8565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062009f1390849088906004016200d441565b600060405180830381600087803b15801562009f2e57600080fd5b505af115801562009f43573d6000803e3d6000fd5b505050506040518060400160405280826001600160a01b031681526020018381525092505050919050565b6000866001600160a01b0316631688f0b98763b63e800d60e01b8888600089600080600060405160240162009faa97969594939291906200d465565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526200a021929187906004016200d4cf565b6020604051808303816000875af11580156200a041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a06791906200c9e8565b979650505050505050565b606060005b82518110156200906f5760006200a0908260016200c476565b90505b83518110156200a18e578381815181106200a0b2576200a0b26200c8eb565b6020026020010151600001516001600160a01b03168483815181106200a0dc576200a0dc6200c8eb565b6020026020010151600001516001600160a01b031611156200a1795760008483815181106200a10f576200a10f6200c8eb565b602002602001015190508482815181106200a12e576200a12e6200c8eb565b60200260200101518584815181106200a14b576200a14b6200c8eb565b6020026020010181905250808583815181106200a16c576200a16c6200c8eb565b6020026020010181905250505b806200a185816200cc06565b9150506200a093565b50806200a19b816200cc06565b9150506200a077565b6005820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556000826200259b565b6003820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790556000826200259b565b6002820180546001810182556000918252602082206001600160a01b038416910155826200259b565b6200151682826200a451565b8015158215151462001516577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200a2e29060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826200a34d576040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152506200a384565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b6040516200a39391906200d503565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816200a3fe576040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152506200a435565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162007d7591906200d555565b600062006c4a826200a925565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200a4c457602002820191906000526020600020905b8154815260200190600101908083116200a4af575b505050505090506000836200a4d9836200aa73565b6040516020016200a4ec9291906200ca08565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382207fffffffff000000000000000000000000000000000000000000000000000000008a1683528152928120919450909290916200a5589186918891016200d593565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a593576200a591876200ab20565b505b6001600160a01b0385166000908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051909183916200a5ec9187918991016200d593565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200a63391906200ca52565b600060405180830381855afa9150503d80600081146200a670576040519150601f19603f3d011682016040523d82523d6000602084013e6200a675565b606091505b5091506200a6929050816200a68c8860206200c48c565b6200ab2d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200a712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a73891906200c91a565b90508082146200a817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001796565b6040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b1580156200a89457600080fd5b505af11580156200a8a9573d6000803e3d6000fd5b50505060058b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555060038a0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200a91160028b0160006200be7f565b896004016000905550505050505050505050565b600080826040516020016200a93b91906200ca52565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200a9bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a9e391906200c9e8565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200aa3a90859087906004016200d441565b600060405180830381600087803b1580156200aa5557600080fd5b505af11580156200aa6a573d6000803e3d6000fd5b50505050915091565b60606000825160206200aa8791906200c48c565b67ffffffffffffffff8111156200aaa2576200aaa26200bfca565b6040519080825280601f01601f1916602001820160405280156200aacd576020820181803683370190505b50905060005b835181101562006c4a5760008482815181106200aaf4576200aaf46200c8eb565b6020026020010151905080826020026020018401525080806200ab17906200cc06565b9150506200aad3565b600062003db7826200abcf565b600080600060208551116200ab445784516200ab47565b60205b905060005b818110156200abc5576200ab628160086200c48c565b866200ab6f83886200c476565b815181106200ab82576200ab826200c8eb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200abbc816200cc06565b9150506200ab4c565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200ac4157602002820191906000526020600020905b8154815260200190600101908083116200ac2c575b5050506001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845282528083209051959650949193506200aca5925085918791016200d593565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200ad5c576001600160a01b0384166000908152602087815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519092916200ad2c9185918791016200d593565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200ad6a836200bcca565b6040516020016200ad7d9291906200ca08565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200aded57600080fd5b505af11580156200ae02573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200ae2391906200ca52565b600060405180830381855afa9150503d80600081146200ae60576040519150601f19603f3d011682016040523d82523d6000602084013e6200ae65565b606091505b5091506200ae829050816200ae7c8760206200c48c565b6200bd77565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af11580156200aefd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200af2791908101906200d631565b50905080516001036200b3595760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200af7f576200af7f6200c8eb565b60200260200101516040518363ffffffff1660e01b81526004016200afb99291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200afd7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200affd91906200c91a565b9050806200b068577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200b03d576200b03d6200c8eb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200b145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201527f736e277420737570706f727465642e000000000000000000000000000000000060a482015260c40162001796565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200b17d9291906200d593565b60405160208183030381529060405280519060200120856000815181106200b1a9576200b1a96200c8eb565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1816000815181106200b21b576200b21b6200c8eb565b6020908102919091018101516001600160a01b038a1660009081528c835260408082207fffffffff000000000000000000000000000000000000000000000000000000008c16835284528082209051929390926200b27e918a918c91016200d593565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284207fffffffff000000000000000000000000000000000000000000000000000000008c168552825282842092519093916200b300918a918c91016200d593565b60408051808303601f1901815291815281516020928301208352908201929092520160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055506200bac2565b6001815111156200ba375760005b81518110156200ba305760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200b3bb576200b3bb6200c8eb565b60200260200101516040518363ffffffff1660e01b81526004016200b3f59291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200b413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b43991906200c91a565b9050806200b4a3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200b478576200b4786200c8eb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8a8585815181106200b4eb576200b4eb6200c8eb565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201527f13370000000000000000000000000000000000000000000000000000000000006044820152606401600060405180830381600087803b1580156200b57b57600080fd5b505af11580156200b590573d6000803e3d6000fd5b50505050600060608a6001600160a01b0316876040516200b5b291906200ca52565b600060405180830381855afa9150503d80600081146200b5ef576040519150601f19603f3d011682016040523d82523d6000602084013e6200b5f4565b606091505b5090925090506200b60c816200ae7c8b60206200c48c565b95508180156200b63b57507f133700000000000000000000000000000000000000000000000000000000000086145b156200b945577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200b6799291906200d593565b604051602081830303815290604052805190602001208888815181106200b6a4576200b6a46200c8eb565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a18484815181106200b715576200b7156200c8eb565b6020908102919091018101516001600160a01b038d1660009081528f835260408082207fffffffff000000000000000000000000000000000000000000000000000000008f16835284528082209051929390926200b778918d918f91016200d593565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008a8c6040516020016200b82f9291906200d593565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200b8b2576200b8b26200c8eb565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200b92357600080fd5b505af11580156200b938573d6000803e3d6000fd5b505050505050506200ba30565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200b98d576200b98d6200c8eb565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200b9fe57600080fd5b505af11580156200ba13573d6000803e3d6000fd5b5050505050505080806200ba27906200cc06565b9150506200b367565b506200bac2565b604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162001796565b6001600160a01b038716600090815260018a01602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200bb1e9188918a91016200d593565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200bbd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162001796565b6005890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200bc3960028a0160006200be7f565b600060048a018190556001600160a01b038816815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a168452825280832090519092916200bc979188918a91016200d593565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200bcde91906200c48c565b67ffffffffffffffff8111156200bcf9576200bcf96200bfca565b6040519080825280601f01601f1916602001820160405280156200bd24576020820181803683370190505b50905060005b835181101562006c4a5760008482815181106200bd4b576200bd4b6200c8eb565b6020026020010151905080826020026020018401525080806200bd6e906200cc06565b9150506200bd2a565b600080600060208551116200bd8e5784516200bd91565b60205b905060005b818110156200abc5576200bdac8160086200c48c565b866200bdb983886200c476565b815181106200bdcc576200bdcc6200c8eb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200be06816200cc06565b9150506200bd96565b611246806200d69d83390190565b610113806200e8e383390190565b61237a806200e9f683390190565b61013c8062010d7083390190565b6108098062010eac83390190565b61020080620116b583390190565b610d0680620118b583390190565b6153a280620125bb83390190565b508054600082559060005260206000209081019062000a8291905b808211156200beb057600081556001016200be9a565b5090565b6000602082840312156200bec757600080fd5b5035919050565b60005b838110156200beeb5781810151838201526020016200bed1565b50506000910152565b600081518084526200bf0e8160208601602086016200bece565b601f01601f19169290920160200192915050565b6001600160a01b0384168152826020820152606060408201526000620059d460608301846200bef4565b600080604083850312156200bf6057600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156200bfaa5781516001600160a01b0316875295820195908201906001016200bf83565b509495945050505050565b6020815260006200259b60208301846200bf6f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200c020576200c0206200bfca565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200c052576200c0526200bfca565b604052919050565b600067ffffffffffffffff8211156200c077576200c0776200bfca565b5060051b60200190565b600082601f8301126200c09357600080fd5b813560206200c0ac6200c0a6836200c05a565b6200c026565b82815260059290921b840181019181810190868411156200c0cc57600080fd5b8286015b8481101562007f2457803583529183019183016200c0d0565b6000602082840312156200c0fc57600080fd5b813567ffffffffffffffff8111156200c11457600080fd5b620082f6848285016200c081565b63ffffffff8116811462000a8257600080fd5b600080604083850312156200c14957600080fd5b82356200c156816200c122565b946020939093013593505050565b6000806000606084860312156200c17a57600080fd5b83359250602084013567ffffffffffffffff8111156200c19957600080fd5b6200c1a7868287016200c081565b925050604084013590509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200c296578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200c2805783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906200c23c565b50978a019795505050918701916001016200c1e0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200c31c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200c3098583516200bef4565b945092850192908501906001016200c2cc565b5092979650505050505050565b600080604083850312156200c33d57600080fd5b823567ffffffffffffffff8111156200c35557600080fd5b6200c363858286016200c081565b95602094909401359450505050565b600081518084526020808501945080840160005b838110156200bfaa578151875295820195908201906001016200c386565b6020815260006200259b60208301846200c372565b6000806000606084860312156200c3cf57600080fd5b83356200c3dc816200c122565b925060208401356200c3ee816200c122565b915060408401356200c400816200c122565b809150509250925092565b600080600080600060a086880312156200c42457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111562003db75762003db76200c447565b808202811582820484141762003db75762003db76200c447565b6001600160a01b038151168252602081015160208301526000604082015160606040850152620082f660608501826200bef4565b6001600160a01b03851681526080602082015260006200c4fe60808301866200c4a6565b82810360408401526200c51281866200bef4565b905082810360608401526200a06781856200c372565b6001600160a01b038116811462000a8257600080fd5b805162003f04816200c528565b805162003f04816200c122565b8051801515811462003f0457600080fd5b600061018082840312156200c57d57600080fd5b6200c5876200bff9565b90506200c594826200c53e565b81526200c5a4602083016200c53e565b60208201526200c5b7604083016200c53e565b604082015260608201516060820152608082015160808201526200c5de60a083016200c54b565b60a082015260c082015160c082015260e082015160e08201526101008083015181830152506101206200c6138184016200c558565b9082015261014082810151908201526101609182015191810191909152919050565b6000806101a083850312156200c64a57600080fd5b6200c65684846200c569565b915061018083015167ffffffffffffffff808211156200c67557600080fd5b818501915085601f8301126200c68a57600080fd5b8151818111156200c69f576200c69f6200bfca565b6200c6b46020601f19601f840116016200c026565b91508082528660208285010111156200c6cc57600080fd5b6200c6df8160208401602086016200bece565b5080925050509250929050565b600181811c908216806200c70157607f821691505b6020821081036200c73b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b63ffffffff8181168382160280821691908281146200c764576200c7646200c447565b505092915050565b8181038181111562003db75762003db76200c447565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826200c7c3576200c7c36200c782565b500690565b81516001600160a01b03168152610140810160208301516200c7f560208401826001600160a01b03169052565b5060408301516200c81160408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b60006001600160a01b03808816835280871660208401525084604083015260a060608301526200c89660a08301856200bef4565b82810360808401526200c8aa81856200bef4565b98975050505050505050565b600061018082840312156200c8ca57600080fd5b6200259b83836200c569565b6020815260006200259b60208301846200bef4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156200c92d57600080fd5b5051919050565b63ffffffff81811683821601908082111562006c4a5762006c4a6200c447565b6020815260006200259b60208301846200c4a6565b828152604060208201526000620082f660408301846200bef4565b6000602082840312156200c99757600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146200259b57600080fd5b63ffffffff82811682821603908082111562006c4a5762006c4a6200c447565b6000602082840312156200c9fb57600080fd5b81516200259b816200c528565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200ca448160048501602087016200bece565b919091016004019392505050565b600082516200ca668184602087016200bece565b9190910192915050565b6000602082840312156200ca8357600080fd5b6200259b826200c558565b60006102606001600160a01b03808c168452808b166020850152508860408401528760608401528660808401528060a08401526200cacf818401876200bef4565b905082810360c08401526200cae581866200bef4565b9150506200caff60e0830184516001600160a01b03169052565b60208301516101006200cb1c818501836001600160a01b03169052565b604085015191506101206200cb3b818601846001600160a01b03169052565b60608601516101408681019190915260808701516101608088019190915260a088015163ffffffff1661018088015260c08801516101a088015260e08801516101c0880152928701516101e0870152908601511515610200860152850151610220850152909301516102409092019190915298975050505050505050565b6000815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015620059dd5760049290920360031b82901b161692915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200cc3a576200cc3a6200c447565b5060010190565b6000826200cc53576200cc536200c782565b500490565b601f82111562002e5357600081815260208120601f850160051c810160208610156200cc815750805b601f850160051c820191505b8181101562000bf3578281556001016200cc8d565b815167ffffffffffffffff8111156200ccbf576200ccbf6200bfca565b6200ccd7816200ccd084546200c6ec565b846200cc58565b602080601f8311600181146200cd2d57600084156200ccf65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855562000bf3565b600085815260208120601f198616915b828110156200cd5e578886015182559484019460019091019084016200cd3d565b50858210156200cd9b57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152815160408201526000602083015160406060840152620059d460808401826200bef4565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b168152600082516200ce188160148501602087016200bece565b919091016014019392505050565b6000826060808201846000805b60038110156200cece578584038952825180518086526020918201918087019190600582901b88018101865b838110156200ceb657898203601f19018552855180516001600160a01b0316835283810151848401526040908101519083018c90526200cea28c8401826200bef4565b96840196958401959250506001016200ce5f565b509c81019c975095909501945050506001016200ce33565b5091979650505050505050565b608080825285518282018190526000919060a090818501906020808b01865b838110156200cf215781516001600160a01b0316855293820193908201906001016200cefa565b5050868303818801526200cf36838b6200c372565b925060409150868303828801528289518085528285019150828160051b860101838c0160005b838110156200d01357601f198884030185528151610160815185528782015188860152888201516200cf988a8701826001600160a01b03169052565b50606082810151908601528b8201518c8601528a82015163ffffffff168b86015260c0808301519086015260e0808301519086015261010080830151908601526101208083015190860152610140918201519185018190526200cffe818601836200bef4565b9688019694505050908501906001016200cf5c565b505089810360608b01526200d029818c6200ce26565b9e9d5050505050505050505050505050565b6040815260006200d07960408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200d07960408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6040815260006200d10360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200d10360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200259b60808301846200bef4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106200d237577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101406001600160a01b03808e1684528c60208501528160408501526200d2678285018d6200bef4565b92506200d278606085018c6200d1ff565b60808401999099525060a082019690965260c081019490945291851660e08401529093166101008201526101200191909152949350505050565b600083516200d2c68184602088016200bece565b8351908301906200d2dc8183602088016200bece565b01949350505050565b60006101406001600160a01b03808e1684528c60208501528160408501526200d3118285018d6200bef4565b91506200d322606085018c6200d1ff565b8960808501528860a08501528760c085015280871660e0850152808616610100850152508281036101208401526200d35b81856200bef4565b9d9c50505050505050505050505050565b6040815260006200d38160408301856200c4a6565b905082151560208301529392505050565b6000806000606084860312156200d3a857600080fd5b835160ff811681146200d3ba57600080fd5b602085015160409095015190969495509392505050565b6080815260006200d3e660808301876200c4a6565b6001600160a01b038616602084015282810360408401526200d40981866200bef4565b915050821515606083015295945050505050565b6040815260006200d43260408301856200bef4565b90508260208301529392505050565b6001600160a01b0383168152604060208201526000620082f660408301846200bef4565b60006101008083526200d47b8184018b6200bf6f565b60208481019a909a526001600160a01b0398891660408501528381036060850152600081529688166080840152505092851660a084015260ff9190911660c083015290921660e09092019190915201919050565b6001600160a01b03841681526060602082015260006200d4f360608301856200bef4565b9050826040830152949350505050565b6040815260006200d54160408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620082f681856200bef4565b6040815260006200d54160408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b825160009082906020808701845b838110156200d5bf578151855293820193908201906001016200d5a1565b5050948252509092019392505050565b600082601f8301126200d5e157600080fd5b815160206200d5f46200c0a6836200c05a565b82815260059290921b840181019181810190868411156200d61457600080fd5b8286015b8481101562007f2457805183529183019183016200d618565b600080604083850312156200d64557600080fd5b825167ffffffffffffffff808211156200d65e57600080fd5b6200d66c868387016200d5cf565b935060208501519150808211156200d68357600080fd5b506200d692858286016200d5cf565b915050925092905056fe60a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b5060f48061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603f60383660046051565b4292915050565b60405190815260200160405180910390f35b60008060208385031215606357600080fd5b823567ffffffffffffffff80821115607a57600080fd5b818501915085601f830112608d57600080fd5b813581811115609b57600080fd5b86602082850101111560ac57600080fd5b6020929092019691955090935050505056fea2646970667358221220ab263683a024250b9359febe188378c982b794bc2b7730ab221465e360593e4e64736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033608060405234801561001057600080fd5b5061011c806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603c60383660046061565b604e565b60405190815260200160405180910390f35b6000605a8284018460ce565b9392505050565b60008060208385031215607357600080fd5b823567ffffffffffffffff80821115608a57600080fd5b818501915085601f830112609d57600080fd5b81358181111560ab57600080fd5b86602082850101111560bc57600080fd5b60209290920196919550909350505050565b60006020828403121560df57600080fd5b503591905056fea264697066735822122033a5587ea19a3e41c571bed2b47961f981c59c65bc35fbe0a8e441802ba104fb64736f6c63430008130033608060405234801561001057600080fd5b506107e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b6100596100543660046102d2565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610399565b61013c565b005b610096610091366004610487565b610259565b6040516100659190610526565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610614565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526102c6828401846106f5565b98975050505050505050565b6000602082840312156102e457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461031457600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461033d57600080fd5b50565b803561034b8161031b565b919050565b60008083601f84011261036257600080fd5b50813567ffffffffffffffff81111561037a57600080fd5b60208301915083602082850101111561039257600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156103b957600080fd5b6103c38b3561031b565b8a35995060208b01356103d58161031b565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561040757600080fd5b6104138e838f01610350565b909750955060c08d013591508082111561042c57600080fd5b506104398d828e01610350565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561047257600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156104a257600080fd5b87356104ad8161031b565b965060208801356104bd8161031b565b955060408801359450606088013567ffffffffffffffff808211156104e157600080fd5b6104ed8b838c01610350565b909650945060808a013591508082111561050657600080fd5b506105138a828b01610350565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101808101602083015161056c602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610594604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a08301516105c060a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516105f58285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561064157858101830151858201604001528201610625565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610180810167ffffffffffffffff811182821017156106cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803563ffffffff8116811461034b57600080fd5b8035801515811461034b57600080fd5b6000610180828403121561070857600080fd5b610710610680565b61071983610340565b815261072760208401610340565b602082015261073860408401610340565b6040820152606083013560608201526080830135608082015261075d60a084016106d1565b60a082015260c083013560c082015260e083013560e08201526101008084013581830152506101206107908185016106e5565b90820152610140838101359082015261016092830135928101929092525091905056fea26469706673582212206a301571f9bcdd5d1ebc74420634ebf7b0a1cef6139ed9083e11b96182dd0cf564736f6c63430008130033608060405234801561001057600080fd5b506101e0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806314a2a78414610030575b600080fd5b61004361003e3660046100c1565b610045565b005b3660008037366000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461007357600080fd5b919050565b60008083601f84011261008a57600080fd5b50813567ffffffffffffffff8111156100a257600080fd5b6020830191508360208285010111156100ba57600080fd5b9250929050565b6000806000806000806000806000806102608b8d0312156100e157600080fd5b6100ea8b61004f565b99506100f860208c0161004f565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561012a57600080fd5b6101368e838f01610078565b909750955060c08d013591508082111561014f57600080fd5b5061015c8d828e01610078565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561019557600080fd5b60e08b0190509295989b9194979a509295985056fea264697066735822122047e6721253312d12de855cfdc6d8979c270ce57849e57b1e1b5fdf0223d9af1e64736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c634300081300335457415020736166652062757920746f6b656e2062616c616e636520697320696e636f7272656374426f622062757920746f6b656e2062616c616e636520697320696e636f7272656374426f622073656c6c20746f6b656e2062616c616e636520697320696e636f72726563745457415020736166652073656c6c20746f6b656e2062616c616e636520697320696e636f72726563744e756d626572206f66207365636f6e64732070726f63657373656420697320696e636f7272656374a2646970667358221220236a1933c50a3f53a72b181af54387d1a68d19e78c0d29930dbc9d719317226c64736f6c63430008130033","sourceMap":"1171:27655:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:578;;;:::i;:::-;;595:17:106;;;;;-1:-1:-1;;;;;595:17:106;;;;;;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;595:17:106;;;;;;;;748:20:117;;;;;-1:-1:-1;;;;;748:20:117;;;17627:852:114;;;:::i;1586:74:107:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;9021:1164:114:-;;;;;;:::i;:::-;;:::i;4051:420::-;;;:::i;2161:134:33:-;;;:::i;:::-;;;;;;;:::i;800:20:117:-;;;;;-1:-1:-1;;;;;800:20:117;;;6225:516:114;;;;;;:::i;:::-;;:::i;1025:26:116:-;;;;;-1:-1:-1;;;;;1025:26:116;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;5265:25:122;;;5253:2;5238:18;987:253:45;5119:177:122;3024:158:107;;;:::i;2930:133:33:-;;;:::i;2631:141::-;;;:::i;2766:716:114:-;;;:::i;12781:1838::-;;;;;;:::i;:::-;;:::i;1125:32:115:-;;;;;-1:-1:-1;;;;;1125:32:115;;;452:451:45;;;;;;:::i;:::-;;:::i;:::-;;;6757:14:122;;6750:22;6732:41;;6720:2;6705:18;452:451:45;6592:187:122;6866:941:114;;;;;;:::i;:::-;;:::i;2447:178:33:-;;;:::i;:::-;;;;;;;:::i;572:17:106:-;;;;;-1:-1:-1;;;;;572:17:106;;;1232:22:115;;;;;-1:-1:-1;;;;;1232:22:115;;;2301:140:33;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;5708:450:114:-;;;;;;:::i;:::-;;:::i;978:41:116:-;;;;;-1:-1:-1;;;;;978:41:116;;;14717:1438:114;;;;;;:::i;:::-;;:::i;549:17:106:-;;;;;-1:-1:-1;;;;;549:17:106;;;4544:509:114;;;;;;:::i;:::-;;:::i;11459:1316::-;;;;;;:::i;:::-;;:::i;1866:141:33:-;;;:::i;865:21:116:-;;;;;-1:-1:-1;;;;;865:21:116;;;2744:190:107;;;:::i;1246:1168:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:584:26:-;;;:::i;16256:1265:114:-;;;;;;:::i;:::-;;:::i;7914:997::-;;;;;;:::i;:::-;;:::i;892:31:116:-;;;;;-1:-1:-1;;;;;892:31:116;;;18852:5177:114;;;;;;:::i;:::-;;:::i;3549:432::-;;;:::i;929:43:116:-;;;;;-1:-1:-1;;;;;929:43:116;;;2199:478:114;;;:::i;5179:952:45:-;;;;;;:::i;:::-;;:::i;774:20:117:-;;;;;-1:-1:-1;;;;;774:20:117;;;407:409:44;;;;;;:::i;:::-;;:::i;1057:36:116:-;;;;;-1:-1:-1;;;;;1057:36:116;;;10191:1262:114;;;;;;:::i;:::-;;:::i;2013:142:33:-;;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;24364:2530:114:-;;;;;;:::i;:::-;;:::i;1481:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1572:26:26;;;;;;;;;1100:19:115;;;;;-1:-1:-1;;;;;1100:19:115;;;5124:512:114;;;;;;:::i;:::-;;:::i;1533:578::-;1607:13;:11;:13::i;:::-;1682;;1673:23;;-1:-1:-1;;;;;1682:13:114;;;;1673:23;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;1673:23:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1666:4:114;:30;;;;-1:-1:-1;;;;;1666:30:114;;;;;;;;;;1792:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1761:28:114;:65;;;;-1:-1:-1;;;;;1761:65:114;;;;;;;;;;1885:41;1901:24;:15;1919:6;1901:24;:::i;:::-;1885:15;:41::i;:::-;1869:57;;:13;:57;;;;;;-1:-1:-1;;;;;1869:57:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1950:6;;1967:5;;1937:50;;1950:6;;;;1967:5;1018:8;1937:4;:50::i;:::-;2010:5;;1998:106;;;;;;;;2017:13;1998:106;-1:-1:-1;;;;;1998:106:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2010:5;1998:106;;;;;;;;;;;2010:5;;;;;1998:106;;2057:46;;;:::i;:::-;1998:11;:106::i;:::-;;1533:578::o;17627:852::-;17834:5;;17764:57;;17824:20;;-1:-1:-1;;;;;17834:5:114;17841:2;17824:9;:20::i;:::-;17764:80;-1:-1:-1;17895:12:114;;;18001:53;17764:80;17895:12;18028:6;18036:7;18045:8;18001:23;:53::i;:::-;17894:160;;;;;;18092:76;18109:5;;;;;;;;;-1:-1:-1;;;;;18109:5:114;18117:4;18123:44;;;;;;;;18154:1;18123:44;;;;;;;;;;;;;;;;;;;18092:8;:76::i;:::-;18289:13;;18342:5;;18356:9;;;;;;;;-1:-1:-1;18356:9:114;;;18289:84;;;;;-1:-1:-1;;;;;;;;;18289:13:114;;;;:44;;:84;;18342:5;;;;18350:4;;18367:5;;18289:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18289:84:114;;;;;;;;;;;;:::i;:::-;18431:5;;18416:56;;;;;;;;;18439:3;18416:56;-1:-1:-1;;;;;18416:56:114;;;;;;;;;;;18221:152;;-1:-1:-1;18221:152:114;;-1:-1:-1;18416:56:114;;18431:5;;18221:152;;18431:5;18416:6;:56::i;:::-;17661:818;;;;;;17627:852::o;1586:74:107:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1586:74:107;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9021:1164:114:-;9169:39;;-1:-1:-1;;;9169:39:114;;9191:16;9179:28;;9169:39;;;6732:41:122;9169:9:114;;;;6705:18:122;;9169:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9218:41:114;;-1:-1:-1;;;9218:41:114;;9242:16;9228:30;;9218:41;;;6732::122;9218:9:114;;-1:-1:-1;9218:9:114;;-1:-1:-1;6705:18:122;;9218:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9314:34:114;;-1:-1:-1;;;9314:34:114;;9324:23;;;9314:34;;;6732:41:122;9314:9:114;;-1:-1:-1;9314:9:114;;-1:-1:-1;6705:18:122;;9314:34:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9403:9:114;;-1:-1:-1;9403:9:114;;-1:-1:-1;9440:21:114;;-1:-1:-1;1132:2:114;1095:7;9440:21;:::i;:::-;9427:35;;;;:9;:35;:::i;:::-;9403:60;;;;;;;;;;9413:49;;;9403:60;;;6732:41:122;6705:18;;9403:60:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9528:9:114;;-1:-1:-1;9528:9:114;;-1:-1:-1;1159:9:114;;-1:-1:-1;1095:7:114;9539:23;9553:9;9539:11;:23;:::i;:::-;9538:37;;;;:::i;:::-;9528:56;;;;;;;;;;9538:45;-1:-1:-1;9538:45:114;9528:56;;;6732:41:122;6705:18;;9528:56:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9663:23;9689:26;9705:9;9689:15;:26::i;:::-;9726:18;;;;;;;;5265:25:122;;;9663:52:114;;-1:-1:-1;9726:7:114;;;;5238:18:122;;9726::114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9821:4:114;;9880:13;;-1:-1:-1;;;;;9821:4:114;;;;-1:-1:-1;9821:22:114;;-1:-1:-1;9821:4:114;;;;;;9880:13;;9891:1;;9880:13;;;:::i;:::-;;;;-1:-1:-1;;9880:13:114;;;;;;;9895:9;;;;-1:-1:-1;9895:9:114;;9821:84;;;;;;;;;;;;;;;9880:13;9821:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9955:20:114;;;;;;;;5265:25:122;;;9955:7:114;;;;5238:18:122;;9955:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10067:15:114;;;;;;;;;;;;;;;;10002:81;;9986:15;;-1:-1:-1;9986:15:114;;-1:-1:-1;10025:40:114;;10002:81;;;;;:::i;:::-;;;;-1:-1:-1;;10002:81:114;;;;;;;;;;;;;;;;;;;;;;;9986:98;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10094:4:114;;10153:13;;-1:-1:-1;;;;;10094:4:114;;;;-1:-1:-1;10094:22:114;;-1:-1:-1;10094:4:114;;;;;;10153:13;;10164:1;;10153:13;;;:::i;:::-;;;;-1:-1:-1;;10153:13:114;;;;;;;10168:9;;;;-1:-1:-1;10168:9:114;;10094:84;;;;;;;;;;;;;;;10153:13;10094:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9124:1061;9021:1164;;:::o;4051:420::-;4168:23;4194:32;4210:15;4194;:32::i;:::-;4253:1;4236:14;;;:18;4346:22;;;;;;;;;;;;;;;;4281:88;;4168:58;;-1:-1:-1;4265:15:114;;;;4304:40;;4281:88;;4346:22;4281:88;;;:::i;:::-;;;;-1:-1:-1;;4281:88:114;;;;;;;;;;;;;;;;;;;;;;;4265:105;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4380:4:114;;4439:13;;-1:-1:-1;;;;;4380:4:114;;;;-1:-1:-1;4380:22:114;;-1:-1:-1;4380:4:114;;;;;;4439:13;;4450:1;;4439:13;;;:::i;:::-;;;;-1:-1:-1;;4439:13:114;;;;;;;4454:9;;;;-1:-1:-1;4454:9:114;;4380:84;;;;;;;;;;;;;;;4439:13;4380:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4117:354;4051:420::o;2161:134:33:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:33;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;6225:516:114:-;6331:9;;6341:13;;;;;:38;;;6371:8;6358:9;:21;;6341:38;6331:49;;;;;;;;;;;;;6757:14:122;6750:22;6732:41;;6720:2;6705:18;;6592:187;6331:49:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6390:27:114;;-1:-1:-1;;;6390:27:114;;6400:16;;;6390:27;;;6732:41:122;6390:9:114;;-1:-1:-1;6390:9:114;;-1:-1:-1;6705:18:122;;6390:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6428:23;6454:32;6470:15;6454;:32::i;:::-;6496:3;;;:15;;;6521:6;;;:13;;;6626:12;;;;;;;;;;;;;;;;6561:78;;6428:58;;-1:-1:-1;6545:15:114;;;;6584:40;;6561:78;;6626:12;6561:78;;;:::i;987:253:45:-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;21868:2:122;1067:63:45;;;21850:21:122;21907:2;21887:18;;;21880:30;21946:34;21926:18;;;21919:62;22017:5;21997:18;;;21990:33;22040:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;3024:158:107:-;3113:13;;:31;;;;;;;;3104:71;;-1:-1:-1;;;;;3113:13:107;;:29;;:31;;;;;;;;;;;;;;:13;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3146:10;;;;;;;;;-1:-1:-1;;;;;3146:10:107;-1:-1:-1;;;;;3146:26:107;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3104:8;:71::i;:::-;3024:158::o;2930:133:33:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:33;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:33;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2766:716:114:-;2901:23;2927:32;2943:15;2927;:32::i;:::-;2998:1;2969:32;;3093:13;;;;;;;;;;;;;;;;3028:79;;2901:58;;-1:-1:-1;3012:15:114;;;;3051:40;;3028:79;;3093:13;3028:79;;;:::i;:::-;;;;-1:-1:-1;;3028:79:114;;;;;;;;;;;;;;;;;;;;;;;3012:96;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3118:4:114;;3177:13;;-1:-1:-1;;;;;3118:4:114;;;;-1:-1:-1;3118:22:114;;-1:-1:-1;3118:4:114;;;;;;3177:13;;3188:1;;3177:13;;;:::i;:::-;;;;-1:-1:-1;;3177:13:114;;;;;;;3192:9;;;;-1:-1:-1;3192:9:114;;3118:84;;;;;;;;;;;;;;;3177:13;3118:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3227:6:114;;-1:-1:-1;;;;;3227:6:114;3213:20;;3227:6;3243:10;;;;:31;;;;3366:13;;;;;;;;;;;;;;;;;;;3301:79;3285:15;;;;3324:40;;3301:79;;;;;:::i;12781:1838::-;12931:45;;-1:-1:-1;;;12931:45:114;;12959:16;12941:34;;;;12931:45;;;6732:41:122;12931:9:114;;;;6705:18:122;;12931:45:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12986:41:114;;-1:-1:-1;;;12986:41:114;;13010:16;12996:30;;12986:41;;;6732::122;12986:9:114;;-1:-1:-1;12986:9:114;;-1:-1:-1;6705:18:122;;12986:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13082:40:114;;-1:-1:-1;;;13082:40:114;;13092:29;;;-1:-1:-1;;13082:40:114;;;6732:41:122;13082:9:114;;-1:-1:-1;13082:9:114;;-1:-1:-1;6705:18:122;;13082:40:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13177:9:114;;-1:-1:-1;13177:9:114;;-1:-1:-1;13220:21:114;;-1:-1:-1;1132:2:114;1095:7;13220:21;:::i;:::-;13201:41;;:15;:41;:::i;:::-;13187:55;;:11;:55;13177:66;;;;;;;;;;;;;6757:14:122;6750:22;6732:41;;6720:2;6705:18;;6592:187;13177:66:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13308:9:114;;-1:-1:-1;13308:9:114;;-1:-1:-1;1159:9:114;;-1:-1:-1;1095:7:114;13319:29;13318:50;13319:29;;:11;:29;:::i;:::-;13318:43;;;;:::i;:::-;13308:61;;;;;;;;;;13318:50;-1:-1:-1;13308:61:114;;;6732:41:122;6705:18;;13308:61:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13380:23;13406:18;13422:1;13406:15;:18::i;:::-;13469:24;;;;;22899:10:122;22887:23;;13469:24:114;;;22869:42:122;13380:44:114;;-1:-1:-1;13469:7:114;;;;22842:18:122;;13469:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13669:5:114;;13679:11;;13711:3;;;;13692:16;;;;13576:54;;-1:-1:-1;13633:132:114;;-1:-1:-1;;;;;;13669:5:114;;;;13676:1;;13679:11;13692:22;;;:::i;:::-;13716:28;;13746:9;;;;;;;;;13716:28;13746:9;;-1:-1:-1;;;;;13716:28:114;;;;13633:22;:132::i;:::-;13785:13;;13815:5;;13823:26;;;;;13576:189;;-1:-1:-1;13776:110:114;;-1:-1:-1;;;;;13785:13:114;;;;:21;;13815:5;;13785:13;;13823:18;;:26;;13576:189;;13823:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13785:65;;;;;;;;;;-1:-1:-1;;;;;23424:55:122;;;13785:65:114;;;23406:74:122;23496:18;;;23489:34;23379:18;;13785:65:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13860:24;;;13776:8;:110::i;:::-;13998:13;;14051:5;;14067:9;;;;;;;;;-1:-1:-1;14067:9:114;;;14078:16;;;;;;;;;;;;13998:97;;;;-1:-1:-1;;;;;;;;;13998:13:114;;;;:44;;:97;;14051:5;;;;14059:6;;13998:97;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13998:97:114;;;;;;;;;;;;:::i;:::-;14212:5;;14258:10;;:28;;;;;;;;13931:164;;-1:-1:-1;13931:164:114;;-1:-1:-1;14172:190:114;;14319:33;;-1:-1:-1;;;;;14212:5:114;;;;14319:33;;14237:50;;13931:164;;14258:10;;;;;:26;;:28;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;14237:50:114;14289:9;14196:103;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:156;;;14172:10;:190::i;:::-;14422:5;;14405:24;;;;;-1:-1:-1;;;;;14422:5:114;;;14405:24;;;320:74:122;14405:8:114;;;;293:18:122;;14405:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14439:18;14481:6;14470:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;14470:18:114;;;;;;;14460:29;;14470:18;14460:29;;;;14499:13;;:32;;;;;;5265:25:122;;;14460:29:114;;-1:-1:-1;;;;;;14499:13:114;;:20;;5238:18:122;;14499:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14550:13:114;;14580:5;;14550:49;;;;;-1:-1:-1;;;;;14580:5:114;;;14550:49;;;23406:74:122;23496:18;;;23489:34;;;14541:71:114;;-1:-1:-1;14550:13:114;;;-1:-1:-1;14550:21:114;;23379:18:122;;14550:49:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14609:1;14541:8;:71::i;:::-;12886:1733;;;;;12781:1838;;:::o;452:451:45:-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;-1:-1:-1;452:451:45;;;;;;:::o;6866:941:114:-;7014:9;;7037:28;1095:7;7037:16;:28;:::i;:::-;7024:42;;:9;:42;7014:53;;;;;;;;;;;;;6757:14:122;6750:22;6732:41;;6720:2;6705:18;;6592:187;7014:53:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7114:34:114;;-1:-1:-1;;;7114:34:114;;7124:23;;;7114:34;;;6732:41:122;7114:9:114;;-1:-1:-1;7114:9:114;;-1:-1:-1;6705:18:122;;7114:34:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7228:23;7254:26;7270:9;7254:15;:26::i;:::-;7353:18;;;;;;;;5265:25:122;;;7228:52:114;;-1:-1:-1;7353:7:114;;;;5238:18:122;;7353::114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7448:4:114;;7507:13;;-1:-1:-1;;;;;7448:4:114;;;;-1:-1:-1;7448:22:114;;-1:-1:-1;7448:4:114;;;;;;7507:13;;7518:1;;7507:13;;;:::i;:::-;;;;-1:-1:-1;;7507:13:114;;;;;;;7522:9;;;;-1:-1:-1;7522:9:114;;7448:84;;;;;;;;;;;;;;;7507:13;7448:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7575:20:114;;;;;;;;5265:25:122;;;7575:7:114;;;;5238:18:122;;7575:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7687:17:114;;;;;;;;;;;;;;;;7622:83;;7606:15;;-1:-1:-1;7606:15:114;;-1:-1:-1;7645:40:114;;7622:83;;;;;:::i;2447:178:33:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5708:450:114;5805:9;;5827:1;5815:13;;;:37;;;5844:8;5832:9;:20;5815:37;5805:48;;;;;;;;;;;;;6757:14:122;6750:22;6732:41;;6720:2;6705:18;;6592:187;5805:48:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:23;5889:32;5905:15;5889;:32::i;:::-;5931:3;;;:15;;;6038:17;;;;;;;;;;;;;;;;5973:83;;5863:58;;-1:-1:-1;5957:15:114;;;;5996:40;;5973:83;;6038:17;5973:83;;;:::i;:::-;;;;-1:-1:-1;;5973:83:114;;;;;;;;;;;;;;;;;;;;;;;5957:100;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6067:4:114;;6126:13;;-1:-1:-1;;;;;6067:4:114;;;;-1:-1:-1;6067:22:114;;-1:-1:-1;6067:4:114;;;;;;6126:13;;6137:1;;6126:13;;;:::i;:::-;;;;-1:-1:-1;;6126:13:114;;;;;;;6141:9;;;;-1:-1:-1;6141:9:114;;6067:84;;;;;;;;;;;;;;;6126:13;6067:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5795:363;5708:450;:::o;14717:1438::-;14850:39;;-1:-1:-1;;;14850:39:114;;14872:16;14860:28;;14850:39;;;6732:41:122;14850:9:114;;;;6705:18:122;;14850:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14899:41:114;;-1:-1:-1;;;14899:41:114;;14923:16;14909:30;;14899:41;;;6732::122;14899:9:114;;-1:-1:-1;14899:9:114;;-1:-1:-1;6705:18:122;;14899:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14995:34:114;;-1:-1:-1;;;14995:34:114;;15005:23;;;14995:34;;;6732:41:122;14995:9:114;;-1:-1:-1;14995:9:114;;-1:-1:-1;6705:18:122;;14995:34:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15084:9:114;;-1:-1:-1;15084:9:114;;-1:-1:-1;15121:21:114;;-1:-1:-1;1132:2:114;1095:7;15121:21;:::i;:::-;15108:35;;;;:9;:35;:::i;:::-;15084:60;;;;;;;;;;15094:49;;;15084:60;;;6732:41:122;6705:18;;15084:60:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15209:9:114;;-1:-1:-1;15209:9:114;;-1:-1:-1;1159:9:114;;-1:-1:-1;1095:7:114;15220:23;15234:9;15220:11;:23;:::i;:::-;15219:37;;;;:::i;:::-;15209:55;;;;;;;;;;15219:44;-1:-1:-1;15209:55:114;;;6732:41:122;6705:18;;15209:55:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15343:23;15369:26;15385:9;15369:15;:26::i;:::-;15559:5;;15569:11;;15601:3;;;;15582:16;;;;15343:52;;-1:-1:-1;15478:54:114;;15547:58;;-1:-1:-1;;;;;15559:5:114;;15343:52;;15569:11;;15582:22;;15601:3;15582:22;:::i;15547:58::-;15652:20;;;;;;;;5265:25:122;;;15478:127:114;;-1:-1:-1;15652:7:114;;;;5238:18:122;;15652:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15784:13:114;;15837:5;;15853:9;;;;;;;;;-1:-1:-1;15853:9:114;;;15864:16;;;;;;;;;;;;15784:97;;;;-1:-1:-1;;;;;;;;;;;15784:13:114;;;;:44;;:97;;15837:5;;;15845:6;;15784:97;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15784:97:114;;;;;;;;;;;;:::i;:::-;15998:5;;16044:10;;:28;;;;;;;;15717:164;;-1:-1:-1;15717:164:114;;-1:-1:-1;15958:190:114;;16105:33;;-1:-1:-1;;;;;15998:5:114;;;;16105:33;;16023:50;;15717:164;;16044:10;;;;;:26;;:28;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;4544:509;4641:40;;-1:-1:-1;;;4641:40:114;;4664:16;4651:29;;;4641:40;;;6732:41:122;4641:9:114;;;;6705:18:122;;4641:40:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4762:23;4788:26;4804:9;4788:15;:26::i;:::-;4824:4;;;:16;;;4932:18;;;;;;;;;;;;;;;;4867:84;;4762:52;;-1:-1:-1;4851:15:114;;;;4890:40;;4867:84;;4932:18;4867:84;;;:::i;11459:1316::-;11658:47;;-1:-1:-1;;;11658:47:114;;11688:16;11668:36;;11658:47;;;6732:41:122;11658:9:114;;;;6705:18:122;;11658:47:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11715:41:114;;-1:-1:-1;;;11715:41:114;;11739:16;11725:30;;11715:41;;;6732::122;11715:9:114;;-1:-1:-1;11715:9:114;;-1:-1:-1;6705:18:122;;11715:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11852:9:114;;-1:-1:-1;11852:9:114;;-1:-1:-1;11897:21:114;;-1:-1:-1;1132:2:114;1095:7;11897:21;:::i;:::-;11876:43;;;;:17;:43;:::i;:::-;11852:68;;;;;;;;;;11862:57;;;11852:68;;;6732:41:122;6705:18;;11852:68:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11930:23;11956:18;11972:1;11956:15;:18::i;:::-;12026:26;;;;;;;;5265:25:122;;;11930:44:114;;-1:-1:-1;12026:7:114;;;;5238:18:122;;12026:26:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12229:5:114;;12239:11;;12271:3;;;;12252:16;;;;12136:54;;-1:-1:-1;12193:132:114;;-1:-1:-1;;;;;;12229:5:114;;;;12236:1;;12239:11;12252:22;;;:::i;12193:132::-;12345:13;;12375:5;;12383:26;;;;;12136:189;;-1:-1:-1;12336:112:114;;-1:-1:-1;;;;;12345:13:114;;;;:21;;12375:5;;12345:13;;12383:18;;:26;;12136:189;;12383:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12345:65;;;;;;;;;;-1:-1:-1;;;;;23424:55:122;;;12345:65:114;;;23406:74:122;23496:18;;;23489:34;23379:18;;12345:65:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12428:17;12336:8;:112::i;:::-;12495:20;;;;;;;;5265:25:122;;;12495:7:114;;;;5238:18:122;;12495:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12642:17:114;;;;;;;;;;;;;;;;12577:83;;12561:15;;-1:-1:-1;12561:15:114;;-1:-1:-1;12600:40:114;;12577:83;;;;;:::i;:::-;;;;-1:-1:-1;;12577:83:114;;;;;;;;;;;;;;;;;;;;;;;12561:100;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12671:13:114;;12724:5;;12740:9;;;;;;;;;-1:-1:-1;12740:9:114;;;12751:16;;;;;;;;;;;;12671:97;;;;-1:-1:-1;;;;;12671:13:114;;;;-1:-1:-1;12671:44:114;;-1:-1:-1;12671:97:114;;12724:5;;;;12732:6;;12671:97;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12671:97:114;;;;;;;;;;;;:::i;1866:141:33:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:190:107;2840:8;;2865:5;;2872:10;;:28;;;;;;;;2823:104;;-1:-1:-1;;;;;2840:8:107;;;;:24;;2865:5;;;;2872:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:61;;;;;;;;;;-1:-1:-1;;;;;23424:55:122;;;2840:61:107;;;23406:74:122;23496:18;;;23489:34;23379:18;;2840:61:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2912:13;;-1:-1:-1;;;;;2912:13:107;2823:8;:104::i;1246:1168:45:-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;25170:2:122;1350:64:45;;;25152:21:122;25209:2;25189:18;;;25182:30;25248:34;25228:18;;;25221:62;25319:6;25299:18;;;25292:34;25343:19;;1350:64:45;24968:400:122;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;1819:584:26:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;23406:74:122;;;2221:17:26;23496:18:122;;;23489:34;2196:43:26;;;;;;;;;23379:18:122;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:26;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;16256:1265:114:-;16378:39;;-1:-1:-1;;;16378:39:114;;16400:16;16388:28;;16378:39;;;6732:41:122;16378:9:114;;;;6705:18:122;;16378:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16427:41:114;;-1:-1:-1;;;16427:41:114;;16451:16;16437:30;;16427:41;;;6732::122;16427:9:114;;-1:-1:-1;16427:9:114;;-1:-1:-1;6705:18:122;;16427:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16523:34:114;;-1:-1:-1;;;16523:34:114;;16533:23;;;16523:34;;;6732:41:122;16523:9:114;;-1:-1:-1;16523:9:114;;-1:-1:-1;6705:18:122;;16523:34:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16612:9:114;;-1:-1:-1;16612:9:114;;-1:-1:-1;16649:21:114;;-1:-1:-1;1132:2:114;1095:7;16649:21;:::i;:::-;16636:35;;;;:9;:35;:::i;:::-;16612:60;;;;;;;;;;16622:49;;;16612:60;;;6732:41:122;6705:18;;16612:60:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16737:9:114;;-1:-1:-1;16737:9:114;;-1:-1:-1;1159:9:114;;-1:-1:-1;1095:7:114;16748:23;16762:9;16748:11;:23;:::i;:::-;16747:37;;;;:::i;:::-;16737:55;;;;;;;;;;16747:44;-1:-1:-1;16737:55:114;;;6732:41:122;6705:18;;16737:55:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16871:23;16897:26;16913:9;16897:15;:26::i;:::-;16970:20;;;;;;;;5265:25:122;;;16871:52:114;;-1:-1:-1;16970:7:114;;;;5238:18:122;;16970:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17043:4:114;;17102:13;;17001:27;;-1:-1:-1;;;;;;17043:4:114;;;;-1:-1:-1;17043:22:114;;17001:27;;;;;;17102:13;;17113:1;;17102:13;;;:::i;:::-;;;;-1:-1:-1;;17102:13:114;;;;;;;17117:9;;;;-1:-1:-1;17117:9:114;;17043:84;;;;;;;;;;;;;;;17102:13;17043:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17001:126;;17137:23;17163:13;;;;;;;;;-1:-1:-1;;;;;17163:13:114;-1:-1:-1;;;;;17163:29:114;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17271:4;;17137:57;;-1:-1:-1;;;;;;17271:4:114;:11;:4;;17344:38;17359:5;17137:57;-1:-1:-1;;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;6241:1;6218:25;;6211:50;;;;6304:2;6281:26;;6274:46;6377:2;6348:32;;;4813:1583;17344:38:114;17396:15;17433:1;17425:10;;17460:1;17449:13;;;;;;;;:::i;:::-;;;;-1:-1:-1;;17449:13:114;;;;;;;17476:9;;;;-1:-1:-1;17476:9:114;;17271:243;;;;;;;;;;;;;;;;;17449:13;17499:5;;17271:243;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16333:1188;;;16256:1265;;:::o;7914:997::-;8058:40;;-1:-1:-1;;;8058:40:114;;8081:16;8068:29;;;8058:40;;;6732:41:122;8058:9:114;;;;6705:18:122;;8058:40:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8108:42:114;;-1:-1:-1;;;8108:42:114;;8133:16;8118:31;;;8108:42;;;6732:41:122;8108:9:114;;-1:-1:-1;8108:9:114;;-1:-1:-1;6705:18:122;;8108:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8197:9:114;;-1:-1:-1;8197:9:114;;-1:-1:-1;8235:21:114;;-1:-1:-1;1132:2:114;1095:7;8235:21;:::i;:::-;8222:35;;;;:9;:35;:::i;:::-;8197:61;;;;;;;;;;8207:50;;;;8197:61;;;6732:41:122;6705:18;;8197:61:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8338:23;8364:26;8380:9;8364:15;:26::i;:::-;8463:18;;;;;;;;5265:25:122;;;8338:52:114;;-1:-1:-1;8463:7:114;;;;5238:18:122;;8463::114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8558:4:114;;8617:13;;-1:-1:-1;;;;;8558:4:114;;;;-1:-1:-1;8558:22:114;;-1:-1:-1;8558:4:114;;;;;;8617:13;;8628:1;;8617:13;;;:::i;:::-;;;;-1:-1:-1;;8617:13:114;;;;;;;8632:9;;;;-1:-1:-1;8632:9:114;;8558:84;;;;;;;;;;;;;;;8617:13;8558:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8679:20:114;;;;;;;;5265:25:122;;;8679:7:114;;;;5238:18:122;;8679:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8791:17:114;;;;;;;;;;;;;;;;8726:83;;8710:15;;-1:-1:-1;8710:15:114;;-1:-1:-1;8749:40:114;;8726:83;;;;;:::i;18852:5177::-;18981:27;;-1:-1:-1;;;18981:27:114;;18991:16;;;;;;;;18981:27;;;6732:41:122;18981:9:114;;;;6705:18:122;;18981:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19072:36;19078:8;19072:36;;19088:1;19091:16;19072:36;;:5;:36::i;:::-;19054:55;;19138:39;19144:9;19138:39;;19155:3;19160:16;19138:39;;:5;:39::i;:::-;19119:59;-1:-1:-1;19259:9:114;;19282;;;;:192;;19467:7;19442:16;19454:4;19442:9;:16;:::i;:::-;19434:25;;19422:8;19414:17;;:45;;;;:::i;:::-;:49;;19462:1;19414:49;:::i;:::-;19377:33;19397:13;;;;;19377:17;;:33;:::i;:::-;:87;;;;:::i;:::-;:97;19282:192;;;19351:7;19310:38;19330:18;;;;;19310:17;;:38;:::i;:::-;:48;19282:192;19259:225;;;;;;;;;;;;;6757:14:122;6750:22;6732:41;;6720:2;6705:18;;6592:187;19259:225:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19531:28;19562:32;19578:15;19562;:32::i;:::-;19604:19;;;;:8;;;:19;;;19633:20;;;:8;;;:20;19663:18;;;:11;;;:18;19757:16;;19784:5;;19792:21;;;;19531:63;;-1:-1:-1;19744:81:114;;19757:16;;-1:-1:-1;;;;;19784:5:114;;;;19792:32;;19604:19;19792:32;:::i;:::-;19744:4;:81::i;:::-;19848:15;;;;19866:3;:8;19898;;;;19876:19;;;;19835:72;;19848:15;-1:-1:-1;;;;;19866:8:114;;19876:30;;;:::i;19835:72::-;20012:16;;20048:5;;20005:50;;;;;-1:-1:-1;;;;;20048:5:114;;;20005:50;;;320:74:122;19974:28:114;;20005:34;;;;;;;293:18:122;;20005:50:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20102:15;;;;20137:5;;20095:49;;;;;-1:-1:-1;;;;;20137:5:114;;;20095:49;;;320:74:122;19974:81:114;;-1:-1:-1;20065:27:114;;20095:33;;;;;293:18:122;;20095:49:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20190:16;;20218:3;:8;20183:44;;;;;-1:-1:-1;;;;;20218:8:114;;;20183:44;;;320:74:122;20065:79:114;;-1:-1:-1;20154:26:114;;20183:34;;;;;293:18:122;;20183:44:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20274:15;;;;20301:3;:8;20267:43;;;;;-1:-1:-1;;;;;20301:8:114;;;20267:43;;;320:74:122;20154:73:114;;-1:-1:-1;20237:27:114;;20267:33;;;;;293:18:122;;20267:43:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20430:5;;20445:16;;20487:8;;;;20463:21;;;;20237:73;;-1:-1:-1;20349:54:114;;20418:78;;-1:-1:-1;;;;;20430:5:114;;20437:6;;20445:16;;20463:32;;20487:8;20463:32;:::i;20418:78::-;20619:9;;;;20611:18;;;;;20349:147;;-1:-1:-1;20507:18:114;;;;20611:7;;;;:18;;;;5265:25:122;;;5253:2;5238:18;;5119:177;20611:18:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20677:15;20719:6;:8;;;20708:6;:8;;;:19;;;;:::i;:::-;20695:6;:9;;;:33;;;;:::i;:::-;20677:51;;20739:1765;20827:13;;20880:5;;20896:9;;;;;;;;;-1:-1:-1;20896:9:114;;;20907:16;;;;;;;;;;;;20827:97;;;;-1:-1:-1;;;;;20827:13:114;;;;:44;;:97;;20880:5;;;20888:6;;20827:97;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20827:97:114;;;;;;;;;;;;:::i;:::-;;;20823:1621;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21744:23:114;21770:20;21777:12;21770:20;:::i;:::-;21744:46;;21923:7;21904:15;:26;:90;;;;-1:-1:-1;21934:60:114;;;21954:40;21934:60;21904:90;21900:269;;;22018:5;;;;21900:269;22070:7;22052:15;:25;22048:121;;;22101:49;;;;;29114:2:122;22101:49:114;;;29096:21:122;29153:2;29133:18;;;29126:30;29192:34;29172:18;;;29165:62;29263:9;29243:18;;;29236:37;29290:19;;22101:49:114;28912:403:122;22048:121:114;22268:9;;;;:73;;;;-1:-1:-1;22281:60:114;;;22301:40;22281:60;22268:73;22264:166;;;22365:46;;;;;29522:2:122;22365:46:114;;;29504:21:122;29561:2;29541:18;;;29534:30;29600:34;29580:18;;;29573:62;29671:6;29651:18;;;29644:34;29695:19;;22365:46:114;29320:400:122;22264:166:114;21726:718;21692:752;20823:1621;;;21017:19;21039:51;21054:5;21061:10;;;;;;;;;-1:-1:-1;;;;;21061:10:114;-1:-1:-1;;;;;21061:26:114;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21039:51;21133:23;;;;:10;:23;;;;;;21017:73;;-1:-1:-1;21133:28:114;:185;;;;-1:-1:-1;21205:5:114;;21189:64;;21285:33;21189:64;;;21285:33;-1:-1:-1;;;;;21205:5:114;;21285:33;;21189:64;;21230:11;;21243:9;;21189:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:129;;;21133:185;21108:470;;;21434:5;;21419:56;;;;;;;;;21442:3;21419:56;-1:-1:-1;;;;;21419:56:114;;;;;;;;;;;;;21434:5;;21447;21454:9;21434:5;21419:6;:56::i;:::-;21498:23;;;;:10;:23;;;;;21524:1;21498:27;;21547:12;;;;:::i;:::-;;;;21108:470;21658:18;;;;:::i;:::-;;;;20999:692;20937:754;;20823:1621;22457:7;;22465:27;:15;22483:9;22465:27;:::i;:::-;22457:36;;;;;;;;;;;;;5265:25:122;;5253:2;5238:18;;5119:177;22457:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20739:1765;;;22589:94;22642:6;:8;;;22631:6;:8;;;:19;;;;:::i;:::-;22619:6;:9;;;:31;;;;:::i;:::-;22600:15;:50;22589:94;;;;;;;;;;;;;;;;;:10;:94::i;:::-;22816:170;22862:9;;;;22861:58;;22908:6;:11;;;22897:6;:8;;;:22;;;;:::i;:::-;22861:58;;;22886:6;:8;;;22875:6;:8;;;:19;;;;:::i;:::-;22840:16;:80;22816:170;;;;;;;;;;;;;;;;;:10;:170::i;:::-;23066:66;23091:6;:8;;;23077:10;:22;23066:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;23212:216;23353:6;:8;;;23329:6;:21;;;:32;;;;:::i;:::-;23306:55;;:20;:55;:::i;:::-;23243:16;;23279:5;;23236:50;;;;;-1:-1:-1;;;;;23279:5:114;;;23236:50;;;320:74:122;23236:34:114;;;;;293:18:122;;23236:50:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:125;23212:216;;;;;;;;;;;;;;;;;:10;:216::i;:::-;23438:195;23559:6;:8;;;23537:6;:19;;;:30;;;;:::i;:::-;23515:52;;:19;:52;:::i;:::-;23469:15;;;;23504:5;;23462:49;;;;;-1:-1:-1;;;;;23504:5:114;;;23462:49;;;320:74:122;23462:33:114;;;;;293:18:122;;23462:49:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:105;;23438:195;;;;;;;;;;;;;;;;;:10;:195::i;:::-;23643:185;23760:6;:8;;;23736:6;:21;;;:32;;;;:::i;:::-;23715:53;;:18;:53;:::i;:::-;23674:16;;23702:3;:8;23667:44;;;;;-1:-1:-1;;;;;23702:8:114;;;23667:44;;;320:74:122;23667:34:114;;;;;293:18:122;;23667:44:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:101;23643:185;;;;;;;;;;;;;;;;;:10;:185::i;:::-;23838:184;23953:6;:8;;;23931:6;:19;;;:30;;;;:::i;:::-;23909:52;;:19;:52;:::i;:::-;23869:15;;;;23896:3;:8;23862:43;;;;;-1:-1:-1;;;;;23896:8:114;;;23862:43;;;320:74:122;23862:33:114;;;;;293:18:122;;23862:43:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:99;;23838:184;;;;;;;;;;;;;;;;;:10;:184::i;:::-;18935:5094;;;;;;;;;18852:5177;;;:::o;3549:432::-;3674:23;3700:32;3716:15;3700;:32::i;:::-;3761:1;3742:16;;;:20;3854:24;;;;;;;;;;;;-1:-1:-1;3854:24:114;;;3789:90;;3674:58;;-1:-1:-1;3773:15:114;;;;3812:40;;3789:90;;3854:24;3789:90;;;:::i;2199:478::-;2347:23;2373:32;2389:15;2373;:32::i;:::-;2429:6;;-1:-1:-1;;;;;2429:6:114;2415:20;;;2445:10;;;;:19;;;;2556:18;;;;;;;;;;;;;;;;;;;2491:84;2347:58;;-1:-1:-1;2475:15:114;;;;2514:40;;2491:84;;2556:18;2491:84;;;:::i;5179:952:45:-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;6015:110::-;5245:886;;;5179:952;;;:::o;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;10191:1262:114:-;10383:47;;-1:-1:-1;;;10383:47:114;;10413:16;10393:36;;10383:47;;;6732:41:122;10383:9:114;;;;6705:18:122;;10383:47:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10440:41:114;;-1:-1:-1;;;10440:41:114;;10464:16;10450:30;;10440:41;;;6732::122;10440:9:114;;-1:-1:-1;10440:9:114;;-1:-1:-1;6705:18:122;;10440:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10556:42:114;;-1:-1:-1;;;10556:42:114;;10566:31;;;10556:42;;;6732:41:122;10556:9:114;;-1:-1:-1;10556:9:114;;-1:-1:-1;6705:18:122;;10556:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10608:23;10634:18;10650:1;10634:15;:18::i;:::-;10704:26;;;;;;;;5265:25:122;;;10608:44:114;;-1:-1:-1;10704:7:114;;;;5238:18:122;;10704:26:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10907:5:114;;10917:11;;10949:3;;;;10930:16;;;;10814:54;;-1:-1:-1;10871:132:114;;-1:-1:-1;;;;;;10907:5:114;;;;10914:1;;10917:11;10930:22;;;:::i;10871:132::-;11023:13;;11053:5;;11061:26;;;;;10814:189;;-1:-1:-1;11014:112:114;;-1:-1:-1;;;;;11023:13:114;;;;:21;;11053:5;;11023:13;;11061:18;;:26;;10814:189;;11061:26;;;:::i;11014:112::-;11173:20;;;;;;;;5265:25:122;;;11173:7:114;;;;5238:18:122;;11173:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11320:17:114;;;;;;;;;;;;;;;;11255:83;;11239:15;;-1:-1:-1;11239:15:114;;-1:-1:-1;11278:40:114;;11255:83;;;;;:::i;2013:142:33:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:33;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;24364:2530:114:-;24756:42;;-1:-1:-1;;;24756:42:114;;24781:16;24766:31;;;24756:42;;;6732:41:122;24756:9:114;;;;6705:18:122;;24756:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25012:36;25018:8;25028:1;25031:16;25012:36;;:5;:36::i;:::-;25001:47;;25187:29;25193:9;25204:1;25207:8;25187:5;:29::i;:::-;25496:28;;-1:-1:-1;;;25496:28:114;;25506:17;;;;25496:28;;;6732:41:122;25175::114;;-1:-1:-1;25496:9:114;;;;6705:18:122;;25496:28:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25760:35:114;;-1:-1:-1;;;25760:35:114;;25770:24;;;;25760:35;;;6732:41:122;25760:9:114;;-1:-1:-1;25760:9:114;;-1:-1:-1;6705:18:122;;25760:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26009:9:114;;-1:-1:-1;26009:9:114;;-1:-1:-1;26046:20:114;;-1:-1:-1;26057:9:114;26046:8;:20;:::i;:::-;26033:34;;:9;:34;:::i;:::-;26009:59;;;;;;;;;;26019:48;;;26009:59;;;6732:41:122;6705:18;;26009:59:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26079:12;26122:9;26109;26095:11;:23;;;;:::i;:::-;26094:37;;;;:::i;:::-;26079:52;-1:-1:-1;26312:9:114;;309:37:27;26376:9:114;;;:34;;26409:1;26376:34;;;26389:16;26401:4;26389:9;:16;:::i;:::-;26362:9;26350:8;:4;26357:1;26350:8;:::i;:::-;26349:22;;;;:::i;:::-;26336:36;;:9;:36;:::i;:::-;:75;;;;:::i;:::-;26312:100;;;;;;;;;;26322:89;;;26312:100;;;6732:41:122;6705:18;;26312:100:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26463:20:114;;;;;;;;5265:25:122;;;26463:7:114;;-1:-1:-1;26463:7:114;;-1:-1:-1;5238:18:122;;26463:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26494:15;26512:71;26546:9;26557:8;26567:9;26578:4;26512:33;:71::i;:::-;26494:89;;26594:23;26698:1;26660:4;26668:1;26660:9;:34;;26693:1;26660:34;;;26673:16;26685:4;26673:9;:16;:::i;:::-;26646:9;26634:8;:4;26641:1;26634:8;:::i;:::-;26633:22;;;;:::i;:::-;26620:36;;:9;:36;:::i;:::-;:75;;;;:::i;:::-;:79;;;;:::i;:::-;26594:105;;26761:34;26783:11;26772:7;:22;;26761:10;:34::i;:::-;26849:38;26871:15;26860:7;:26;26849:10;:38::i;:::-;24556:2338;;;24364:2530;;;;;:::o;5124:512::-;5219:9;;5240:1;5229:12;;;:43;;-1:-1:-1;5256:16:114;5245:27;;5229:43;5219:54;;;;;;;;;;;;;6757:14:122;6750:22;6732:41;;6720:2;6705:18;;6592:187;5219:54:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5342:23;5368:32;5384:15;5368;:32::i;:::-;5410:3;;;:14;;;5516:17;;;;;;;;;;;;;;;;5451:83;;5342:58;;-1:-1:-1;5435:15:114;;;;5474:40;;5451:83;;5516:17;5451:83;;;:::i;1667:955:107:-;1746:13;:11;:13::i;:::-;1845:10;;1819:38;;-1:-1:-1;;;;;1845:10:107;;;;1819:38;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;1819:38:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1803:13:107;:54;;;;-1:-1:-1;;;;;1803:54:107;;;;;;2066:5;;2178:10;;:28;;;;;;;;2031:279;;2066:5;;;;-1:-1:-1;;2141:35:107;;2178:10;;;:26;;:28;;;;;;;;;;;;;;;:10;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:13;;2101:143;;;;;30224:25:122;;;;-1:-1:-1;;;;;2216:13:107;30265:18:122;;;30258:83;30197:18;;2101:143:107;;;-1:-1:-1;;2101:143:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2291:9:107;:7;:9::i;:::-;2031:5;;-1:-1:-1;;;;;2031:5:107;;:279;;;;:13;:279::i;:::-;2385:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:16:107;:48;;;;-1:-1:-1;;;;;2366:48:107;;;;;;;;;;2492:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2478:11:107;:49;;;;-1:-1:-1;;;;;2478:49:107;;;;;;;;;;2546:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2537:6:107;:37;;;;-1:-1:-1;;;;;2537:37:107;;;;;;2601:13;;2592:23;;2601:13;;;2592:23;;;:::i;:::-;-1:-1:-1;;;;;338:55:122;;;320:74;;308:2;293:18;2592:23:107;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2585:4:107;:30;;;;-1:-1:-1;;;;;2585:30:107;;;;;;;;;;1667:955::o;28330:494:114:-;28397:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28397:21:114;28437:380;;;;;;;;28477:6;;-1:-1:-1;;;;;28477:6:114;;;28437:380;;28507:6;;;28437:380;;;;-1:-1:-1;28437:380:114;;;;;;;;;;28596:23;1132:2;1018:8;28596:23;:::i;:::-;28437:380;;1059:6;28437:380;;;;;;;;;;;1132:2;28437:380;;;;1095:7;28437:380;;;;1159:9;28437:380;;;;28784:22;28437:380;;;;;;;;-1:-1:-1;28430:387:114;28330:494::o;20040:117:31:-;20122:28;20127:5;20134:2;20138:4;20144:5;20122:4;:28::i;26933:636:114:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;27168:4:114;;27193:22;;27150:66;;-1:-1:-1;;;;;27168:4:114;;27174:17;;27193:22;;27204:10;;27193:22;;;:::i;:::-;;;;-1:-1:-1;;27193:22:114;;;;;;-1:-1:-1;;;;;;;;;;27193:22:114;-1:-1:-1;;;;;;;;;;;;;7261:163:107;;;;;;;-1:-1:-1;;;;;7261:163:107;;;;;;;;;;;;;;;;;;7031:400;27150:66:114;27141:75;;27255:37;27271:4;27278:6;27286:5;27255:7;:37::i;:::-;27345:51;27358:9;27378:4;27385:10;27345:4;:51::i;:::-;27482:23;;;;;-1:-1:-1;;;;;338:55:122;;27482:23:114;;;320:74:122;27482:8:114;;;;293:18:122;;27482:23:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27541:7:114;;27515:47;;;;;-1:-1:-1;;;;;27541:7:114;;;27515:47;;;23406:74:122;23496:18;;;23489:34;;;27515:17:114;;;;-1:-1:-1;27515:17:114;;-1:-1:-1;23379:18:122;;27515:47:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26933:636;;;;;;:::o;7638:1252:107:-;7819:319;;;;;;;;7859:6;;-1:-1:-1;;;;;7859:6:107;;;7819:319;;7889:6;;;7819:319;;;;7786:30;7819:319;;;;;;7859:6;7713:57;7819:319;;;;;;;;;;;;;8007:15;7819:319;;;;8039:1;7819:319;;;;8057:4;7819:319;;;;7859:6;7819:319;;;;;;8105:22;7819:319;;;;8279:1;8232:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8232:49:107;;;;;;;;;;;;;;;;8222:59;;8296:9;8291:278;8315:7;:14;8311:1;:18;8291:278;;;8363:195;;;;;;;;8431:4;;-1:-1:-1;;;;;8431:4:107;8363:195;;8469:22;;8363:195;8469:22;;;5265:25:122;;;8363:195:107;;;;;;5238:18:122;8469:22:107;;;;;;;;;;;;8459:33;;;;;;8363:195;;;;8534:8;8523:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;8363:195;;;8350:7;8358:1;8350:10;;;;;;;;:::i;:::-;;;;;;:208;;;;8331:3;;;;;:::i;:::-;;;;8291:278;;;-1:-1:-1;8666:18:107;;8770:7;;8793:23;;;;8780:10;;;;8632:251;;8666:18;;;8737:23;;-1:-1:-1;;;;;8770:7:107;;;;8780:36;;8793:23;8780:36;:::i;:::-;8714:103;;-1:-1:-1;;;;;23424:55:122;;;8714:103:107;;;23406:74:122;23496:18;;;23489:34;23379:18;;8714:103:107;;;-1:-1:-1;;8714:103:107;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8864:9:107;:7;:9::i;:::-;-1:-1:-1;;;;;8632:12:107;;;:251;;;;:12;:251::i;:::-;7776:1114;7638:1252;;;;:::o;1408:1319:118:-;-1:-1:-1;;;1804:16:118;-1:-1:-1;;;;;1795:7:118;-1:-1:-1;;;;;;;;;;;;;;;1804:16:118;1937:9;1932:99;1956:6;:13;1952:1;:17;1932:99;;;2011:6;2018:1;2011:9;;;;;;;;:::i;:::-;;;;;;;1990:1;:18;1992:15;1997:6;2004:1;1997:9;;;;;;;;:::i;:::-;;;;;;;1992:4;:15::i;:::-;1990:18;;;;;;;;;;;;;;-1:-1:-1;1990:18:118;:30;;;;;;-1:-1:-1;;;;;1990:30:118;;;;;;;;;;-1:-1:-1;1990:30:118;;;;;;;;;;;;;;:::i;:::-;;;;;1971:3;;;;;:::i;:::-;;;;1932:99;;;;2093:23;2133:6;:13;2119:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2119:28:118;;2093:54;;2162:9;2157:96;2181:6;:13;2177:1;:17;2157:96;;;2227:15;2232:6;2239:1;2232:9;;;;;;;;:::i;2227:15::-;2215:6;2222:1;2215:9;;;;;;;;:::i;:::-;;;;;;;;;;:27;2196:3;;;;:::i;:::-;;;;2157:96;;;;2293:29;2325:12;2330:6;2325:4;:12::i;:::-;2293:44;;2385:12;2400:21;2408:12;2400:7;:21;;:::i;:::-;2385:36;;2488:22;2513:25;2522:12;2536:1;2513:8;:25;;:::i;:::-;2488:50;;2610:52;2665:1;:18;2667:12;2680:1;2667:15;;;;;;;;:::i;:::-;;;;;;;2665:18;;;;;;;;;;;2610:73;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:73:118;-1:-1:-1;;;;;2610:73:118;-1:-1:-1;;;;;2610:73:118;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2610:73:118;;;;-1:-1:-1;2702:4:118;;2708:5;;-1:-1:-1;2610:73:118;;-1:-1:-1;1408:1319:118;;-1:-1:-1;;;;;;;;;;;1408:1319:118:o;3265:313:107:-;3365:15;;;;;-1:-1:-1;;;;;338:55:122;;3365:15:107;;;320:74:122;3365:8:107;;;;293:18:122;;3365:15:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3390:37:107;;;;;3404:4;3390:37;;;33238:41:122;;;33295:18;;;33288:50;;;33354:18;;;33347:50;;;33413:18;;;33406:50;3390:13:107;;-1:-1:-1;3390:13:107;;-1:-1:-1;33210:19:122;;3390:37:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3456:5;-1:-1:-1;;;;;3442:33:107;;3463:4;3469:5;3442:33;;;;;;;:::i;:::-;;;;;;;;3485:13;;:34;;;;;-1:-1:-1;;;;;3485:13:107;;;;:21;;:34;;3507:4;;3513:5;;3485:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3538:13:107;;:26;;;;;-1:-1:-1;;;;;338:55:122;;;3538:26:107;;;320:74:122;3529:42:107;;-1:-1:-1;3538:13:107;;;;-1:-1:-1;3538:19:107;;293:18:122;;3538:26:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3566:4;3529:8;:42::i;2711:3375:115:-;2959:34;2996:503;;;;;;;;3036:5;:14;;;-1:-1:-1;;;;;2996:503:115;;;;;3074:5;:15;;;-1:-1:-1;;;;;2996:503:115;;;;;3121:1;-1:-1:-1;;;;;2996:503:115;;;;;3149:5;:15;;;2996:503;;;;3189:5;:16;;;2996:503;;;;3228:5;:13;;;2996:503;;;;;;3264:5;:13;;;2996:503;;;;3302:1;2996:503;;;;3323:18;2996:503;;;;3374:5;2996:503;;;;;;3465:23;2996:503;;;;3410:23;2996:503;;;2959:540;;3510:28;3553:83;3577:58;3592:12;3606:10;;;;;;;;;-1:-1:-1;;;;;3606:10:115;-1:-1:-1;;;;;3606:26:115;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3577:58;3553:12;;:23;:83::i;:::-;3724:17;;3715:27;;;;;-1:-1:-1;;;;;338:55:122;;;3715:27:115;;;320:74:122;3510:126:115;;-1:-1:-1;3715:8:115;;;;293:18:122;;3715:27:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3759:22:115;;3799:7;;3809:23;;;;3752:81;;;;;-1:-1:-1;;;;;3799:7:115;;;3752:81;;;23406:74:122;23496:18;;;23489:34;;;;3752:38:115;;;-1:-1:-1;3752:38:115;;-1:-1:-1;23379:18:122;;3752:81:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3924:15:115;;;3937:1;3924:15;;;;;;;;3899:22;;3924:15;;;;;;;;;;-1:-1:-1;3924:15:115;3899:40;;3968:5;:15;;;3949:6;3956:1;3949:9;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;3949:35:115;;;-1:-1:-1;;;;;3949:35:115;;;;;4013:5;:14;;;3994:6;4001:1;3994:9;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3994:34:115;;;;:9;;;;;;;;;;:34;4119:16;;;4133:1;4119:16;;;;;;;;4085:31;;4119:16;;4133:1;;4119:16;;;;;;;;;-1:-1:-1;4119:16:115;4085:50;;4165:12;:23;;;4145:14;4160:1;4145:17;;;;;;;;:::i;:::-;;;;;;:43;;;;;4218:12;:22;;;4198:14;4213:1;4198:17;;;;;;;;:::i;:::-;;;;;;;;;;:42;4320:23;;;4341:1;4320:23;;;;;;;;;4287:30;;4320:23;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4320:23:115;;;;;;;;;;;;;;;;4287:56;;4413:508;;;;;;;;4458:1;4413:508;;;;4488:1;4413:508;;;;4513:5;:14;;;-1:-1:-1;;;;;4413:508:115;;;;;4553:5;:16;;;4413:508;;;;4594:5;:15;;;4413:508;;;;4632:5;:13;;;4413:508;;;;;;4668:5;:13;;;4413:508;;;;4706:5;:15;;;4413:508;;;;4742:63;4771:5;4778:26;4742:28;:63::i;:::-;4413:508;;;;4835:5;:16;;;4413:508;;;;4893:3;4898:11;4876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4413:508;;;4401:6;4408:1;4401:9;;;;;;;;:::i;:::-;;;;;;:520;;;;4987:533;;;;;;;;5032:1;4987:533;;;;5062:1;4987:533;;;;5095:1;-1:-1:-1;;;;;4987:533:115;;;;;5123:12;:23;;;4987:533;;;;5171:12;:22;;;4987:533;;;;5216:12;:20;;;4987:533;;;;;;5259:12;:20;;;4987:533;;;;5304:12;:22;;;4987:533;;;;5347:69;5376:12;5390:25;5347:28;:69::i;:::-;4987:533;;;;5446:12;:23;;;4987:533;;;;5494:15;4987:533;;;4975:6;4982:1;4975:9;;;;;;;;:::i;:::-;;;;;;:545;;;;5574:45;:153;;;;;;;;5662:1;5635:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5635:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;;;5693:1;5666:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5666:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;;;5724:1;5697:29;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5697:29:115;;;;;;;;;;;;;;;-1:-1:-1;5574:153:115;;5796:6;:11;5787:21;;;;;-1:-1:-1;;;;;5796:11:115;;;5787:21;;;320:74:122;5574:153:115;;-1:-1:-1;5787:8:115;;;;293:18:122;;5787:21:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5822:28:115;;;;-1:-1:-1;5818:262:115;;5866:10;;:63;;;;;-1:-1:-1;;;;;5866:10:115;;;;:17;;:63;;5884:6;;5892:14;;5908:6;;5916:12;;5866:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5818:262;;;5960:32;;;;;39087:66:122;39075:79;;5960:32:115;;;39057:98:122;5960:15:115;;;;39030:18:122;;5960:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6006:10:115;;:63;;;;;-1:-1:-1;;;;;6006:10:115;;;;-1:-1:-1;6006:17:115;;-1:-1:-1;6006:63:115;;6024:6;;6032:14;;6048:6;;6056:12;;6006:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5818:262;2907:3179;;;;;;2711:3375;;;;;:::o;2493:990:45:-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;4095:277:26:-;4163:1;4158;:6;4154:212;;4185:44;;;;;39368:2:122;39350:21;;;39407:2;39387:18;;;39380:30;39446:34;39441:2;39426:18;;39419:62;39517:7;39512:2;39497:18;;39490:35;39557:3;39542:19;;39166:401;4185:44:26;;;;;;;;4248:34;4280:1;4248:34;;;;;;:::i;:::-;;;;;;;;4301;4333:1;4301:34;;;;;;:::i;:::-;;;;;;;;4349:6;:4;:6::i;27575:749:114:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;27897:4:114;;27922:22;;27879:66;;-1:-1:-1;;;;;27897:4:114;;27903:17;;27922:22;;27933:10;;27922:22;;;:::i;27879:66::-;27870:75;;27984:63;28011:4;28018:6;28026:7;28035:4;28041:5;27984:18;:63::i;:::-;28100:51;28113:9;28133:4;28140:10;28100:4;:51::i;:::-;28237:23;;;;;-1:-1:-1;;;;;338:55:122;;28237:23:114;;;320:74:122;28237:8:114;;;;293:18:122;;28237:23:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28296:7:114;;28270:47;;;;;-1:-1:-1;;;;;28296:7:114;;;28270:47;;;23406:74:122;23496:18;;;23489:34;;;28270:17:114;;;;-1:-1:-1;28270:17:114;;-1:-1:-1;23379:18:122;;28270:47:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27575:749;;;;;;;;:::o;3262:157:26:-;3322:9;3317:96;;3352:30;;;;;40808:2:122;40790:21;;;40847:2;40827:18;;;40820:30;40886:25;40881:2;40866:18;;40859:53;40944:2;40929:18;;40606:347;3352:30:26;;;;;;;;3396:6;:4;:6::i;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:26;:1;-1:-1:-1;;;;;3685:6:26;;3681:212;;3712:44;;;;;41160:2:122;41142:21;;;41199:2;41179:18;;;41172:30;41238:34;41233:2;41218:18;;41211:62;41309:7;41304:2;41289:18;;41282:35;41349:3;41334:19;;40958:401;3712:44:26;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;2703:190:38:-;2786:14;2821:19;2828:1;2831:3;2836;2821:6;:19::i;:::-;2812:28;;2850:36;;;;;;;;;;;;;;;;;;2879:6;2850:12;:36::i;3425:191:26:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;993:4716:102:-;1136:15;1471:1;1460:8;:12;:44;;;;-1:-1:-1;1488:16:102;1476:28;;;1460:44;1453:52;;;;:::i;:::-;1534:1;1522:9;:13;:38;;;;;1552:8;1539:9;:21;;1522:38;1515:46;;;;:::i;:::-;1586:9;1578:4;:17;;1571:25;;;;:::i;:::-;1734:15;1721:9;:28;;1715:94;;1791:17;;;;;;;;;;;;;;;;1759:50;;;;;;;1791:17;1759:50;;;:::i;1715:94::-;2481:9;2470:8;:20;2457:9;:34;2439:15;:52;2433:151;;2551:17;;;;;;;;;;;;;;;;2519:50;;;;;;;2551:17;2519:50;;;:::i;2433:151::-;3026:12;3073:9;3060;3042:15;:27;3041:41;;;;;:::i;:::-;;3026:56;;3180:4;3188:1;3180:9;3176:1246;;4406:1;4393:9;4381:4;4388:1;4381:8;4380:22;4367:9;:36;:40;4360:47;;;;;3176:1246;5451:16;;5438:30;;:37;;:41;;;-1:-1:-1;993:4716:102;;;;;;;:::o;619:1105:106:-;712:13;:11;:13::i;:::-;775:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;767:49;;:5;:49;;;;-1:-1:-1;;;;;767:49:106;;;;;;;;;;;;;;;;832:39;;;;;;;;;;;;;;;;;;;;;;:32;:39::i;:::-;826:45;;:3;:45;;;;-1:-1:-1;;;;;826:45:106;;;;;;;;;;;;;;;;889:41;;;;;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;881:49;;:5;:49;;;;-1:-1:-1;;;;;881:49:106;;;;;;;;;;;;;999:6;;1008:5;:10;986:42;;999:6;;;;1008:10;1020:7;986:4;:42::i;:::-;1051:6;;1060:3;:8;1038:40;;-1:-1:-1;;;;;1051:6:106;;;;1060:8;1070:7;1038:4;:40::i;:::-;1197:16;;;1211:1;1197:16;;;;;;;;;1171:23;;1197:16;;;;;;;;-1:-1:-1;;1235:5:106;:10;1223:9;;;;-1:-1:-1;;;;;;1235:10:106;;1223:9;;-1:-1:-1;1235:10:106;;1223:9;;;;:::i;:::-;-1:-1:-1;;;;;1223:22:106;;;:9;;;;;;;;;:22;1267:3;:8;1255:9;;1267:8;;;1255:6;;1267:8;;1255:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1255:20:106;;;:9;;;;;;;;;:20;1297:5;:10;1285:9;;1297:10;;;1285:6;;1292:1;;1285:9;;;;;;:::i;:::-;-1:-1:-1;;;;;1285:22:106;;;:9;;;;;;;;;:22;1358:7;;1367:9;;1397:8;;1339:71;;1358:7;;;;1367:9;;;;1378:6;;1386:1;;1397:8;1358:7;1339:18;:71::i;:::-;1318:5;:94;;;;-1:-1:-1;;;;;1318:94:106;;;;;;1462:7;;1471:9;;1501:8;;1443:71;;1462:7;;;;1471:9;;;;1482:6;;1490:1;;1501:8;-1:-1:-1;1443:18:106;:71::i;:::-;1422:5;:94;;;;-1:-1:-1;;;;;1422:94:106;;;;;;1566:7;;1575:9;;1605:8;;1547:71;;1566:7;;;;1575:9;;;;1586:6;;1594:1;;1605:8;1594:1;1547:18;:71::i;:::-;1526:5;:94;;;;-1:-1:-1;;;;;1526:94:106;;;;;;1684:6;;1701:5;;1671:46;;1684:6;;;;1701:5;1709:7;1671:4;:46::i;1730:281::-;1845:20;;;1863:1;1845:20;;;1781;1845;;;;;;1813:29;;1845:20;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1845:20:106;;;;;;;;;;;;-1:-1:-1;;1875:19:106;;;;;;;;;1889:5;1875:19;-1:-1:-1;;;;;1875:19:106;;;;;;;;;:11;;;;-1:-1:-1;1875:19:106;:11;;-1:-1:-1;;1875:11:106;;;;:::i;:::-;;;;;;;;;;;:19;;;;1904:17;;;;;;;;;1918:3;1904:17;-1:-1:-1;;;;;1904:17:106;;;;;;;;;;;;:11;;:8;;:17;;:11;;;;;;:::i;:::-;;;;;;:17;;;;1942:37;1970:8;1942:27;:37::i;2031:854:119:-;2234:13;2250:4;-1:-1:-1;;;;;2250:10:119;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2234:28;;2272:20;2307:4;-1:-1:-1;;;;;2307:23:119;;2331:2;2335:5;2342:4;2348:9;2359:1;2362;2365;2376;2388;2392:5;2307:91;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2272:126;;2508:22;:7;:20;:22::i;:::-;2498:32;;2541:23;2579:9;2574:148;2598:7;:14;2594:1;:18;2574:148;;;2663:10;2675:35;2697:12;2675:7;2683:1;2675:10;;;;;;;;:::i;:::-;;;;;;;:21;;:35;;;;:::i;:::-;2646:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2633:78;;2614:3;;;;;:::i;:::-;;;;2574:148;;;;2767:4;-1:-1:-1;;;;;2767:20:119;;2788:2;2792:5;2799:4;2805:9;2816:1;2819;2822;2833;2845;2866:10;2849:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;2767:111;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2224:661;;;2031:854;;;;;;:::o;20436:825:31:-;20600:38;;;-1:-1:-1;;;;;338:55:122;;;20600:38:31;;;;320:74:122;;;;20600:38:31;;;;;;;;;;293:18:122;;;;20600:38:31;;;;;;;;;;;;;20589:50;;20565:20;;20589:10;;;:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:77;;;20649:15;20678:7;20667:30;;;;;;;;;;;;:::i;:::-;20649:48;-1:-1:-1;20734:71:31;20800:4;20734:51;20782:2;20734:38;;:22;:8;20750:5;20734:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;20851:6;20847:408;;;20914:34;;;;;;;;;;;;;;;;;;;;;;20903:46;;20876:23;;-1:-1:-1;;;;;20903:10:31;;;:46;;20914:34;20903:46;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20873:76;;;20963:14;20991:10;20980:33;;;;;;;;;;;;:::i;:::-;20963:50;;21038:7;21031:4;:14;21027:144;;;21076:14;21086:4;21076:7;:14;:::i;:::-;21065:26;;;;:::i;:::-;;;21027:144;;;21141:14;21148:7;21141:4;:14;:::i;:::-;21130:26;;;;:::i;:::-;;;21027:144;21184:60;21237:6;21184:38;;:22;:8;21200:5;21184:15;:22::i;4624:424:107:-;4746:15;;;;;-1:-1:-1;;;;;338:55:122;;4746:15:107;;;320:74:122;4746:8:107;;;;293:18:122;;4746:15:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4775:8;4771:133;;;4799:37;;;;;4813:4;4799:37;;;33238:41:122;;;33295:18;;;33288:50;;;33354:18;;;33347:50;;;33413:18;;;33406:50;4799:13:107;;;;33210:19:122;;4799:37:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4879:5;-1:-1:-1;;;;;4855:38:107;;4886:6;4855:38;;;;;;:::i;:::-;;;;;;;;4771:133;4913:13;;:38;;;;;-1:-1:-1;;;;;4913:13:107;;;;:20;;:38;;4934:6;;4942:8;;4913:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4970:13:107;;5014:18;;4961:80;;-1:-1:-1;;;;;;4970:13:107;;;;-1:-1:-1;4970:26:107;;4997:5;;5014:18;;5025:6;;5014:18;;;:::i;:::-;;;;;;;;;;;;;5004:29;;;;;;4970:64;;;;;;;;;;;;;;;-1:-1:-1;;;;;23424:55:122;;;;23406:74;;23511:2;23496:18;;23489:34;23394:2;23379:18;;23232:297;4970:64:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5036:4;4961:8;:80::i;220:180:118:-;313:7;383:6;372:18;;;;;;;;:::i;:::-;;;;-1:-1:-1;;372:18:118;;;;;;;;;362:29;;372:18;362:29;;;;349:43;;;46483:19:122;46518:12;349:43:118;;;;;;;;;;;;339:54;;;;;;332:61;;220:180;;;:::o;406:430::-;467:16;500:9;495:313;519:5;:12;515:1;:16;495:313;;;557:9;569:5;:1;573;569:5;:::i;:::-;557:17;;552:246;580:5;:12;576:1;:16;552:246;;;632:5;638:1;632:8;;;;;;;;:::i;:::-;;;;;;;621:5;627:1;621:8;;;;;;;;:::i;:::-;;;;;;;:19;617:167;;;664:12;679:5;685:1;679:8;;;;;;;;:::i;:::-;;;;;;;664:23;;720:5;726:1;720:8;;;;;;;;:::i;:::-;;;;;;;709:5;715:1;709:8;;;;;;;;:::i;:::-;;;;;;:19;;;;;761:4;750:5;756:1;750:8;;;;;;;;:::i;:::-;;;;;;:15;;;;;642:142;617:167;594:3;;;;:::i;:::-;;;;552:246;;;-1:-1:-1;533:3:118;;;;:::i;:::-;;;;495:313;;;-1:-1:-1;824:5:118;;406:430;-1:-1:-1;406:430:118:o;829:297:120:-;980:10;;;;972:25;;;;;;;;46715::122;;;;46756:18;;;46749:34;;;914:12:120;;939:7;;;;;;206:42;;972:7;;46688:18:122;;972:25:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:13;;;1043:2;1033:13;;;;;;;;;938:59;;-1:-1:-1;938:59:120;;-1:-1:-1;938:59:120;-1:-1:-1;1008:22:120;;1033:13;;;;;;;;;-1:-1:-1;;1068:25:120;;;;;;47375:19:122;;;;47410:12;;;47403:28;;;;-1:-1:-1;;;47469:3:122;47465:16;;;;47483:66;47461:89;47447:12;;;47440:111;1068:25:120;;;;;;;;;47567:12:122;;;;1068:25:120;;;;;-1:-1:-1;;;829:297:120:o;3841:1483:121:-;3972:13;4081:18;4067:5;:10;;;:32;4063:91;;831:4;4115:28;4063:91;4238:5;:23;;;4234:80;;;925:4;4277:26;4234:80;4434:26;4408:5;:22;;;:52;4404:256;;1057:4;4476:42;4404:256;;;4565:26;4539:5;:22;;;:52;4535:125;;1120:4;4607:42;4535:125;4768:26;4743:5;:21;;;:51;4739:123;;1250:4;4810:41;4739:123;4968:26;4951:13;:43;;;;;;;;:::i;:::-;;4947:348;;1371:4;5010:38;4947:348;;;5086:26;5069:13;:43;;;;;;;;:::i;:::-;;5065:230;;1430:4;5128:38;5065:230;;;5204:26;5187:13;:43;;;;;;;;:::i;:::-;;5183:112;;1489:4;5246:38;3841:1483;;;;:::o;2409:432:26:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;47792:74:122;;;2677:17:26;47882:18:122;;;47875:34;;;;2712:4:26;47925:18:122;;;47918:34;2489:11:26;;1671:64;2586:43;;47765:18:122;;2652:67:26;;;-1:-1:-1;;2652:67:26;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:26;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:26;2820:7;:14;;;;;;;;2409:432::o;5129:560:107:-;5355:15;;;;;-1:-1:-1;;;;;338:55:122;;5355:15:107;;;320:74:122;5355:8:107;;;;293:18:122;;5355:15:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5384:8;5380:133;;;5408:37;;;;;5422:4;5408:37;;;33238:41:122;;;33295:18;;;33288:50;;;33354:18;;;33347:50;;;33413:18;;;33406:50;5408:13:107;;;;33210:19:122;;5408:37:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5488:5;-1:-1:-1;;;;;5464:38:107;;5495:6;5464:38;;;;;;:::i;:::-;;;;;;;;5380:133;5523:13;;:69;;;;;-1:-1:-1;;;;;5523:13:107;;;;:31;;:69;;5555:6;;5563:12;;5577:4;;5583:8;;5523:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5611:13:107;;5655:18;;5602:80;;-1:-1:-1;;;;;;5611:13:107;;;;-1:-1:-1;5611:26:107;;5638:5;;5655:18;;5666:6;;5655:18;;;:::i;5602:80::-;5129:560;;;;;:::o;1434:1263:38:-;1518:14;1559:3;1552;:10;;1544:85;;;;;;;48861:2:122;1544:85:38;;;48843:21:122;48900:2;48880:18;;;48873:30;48939:34;48919:18;;;48912:62;49010:32;48990:18;;;48983:60;49060:19;;1544:85:38;48659:426:122;1544:85:38;1863:3;1858:1;:8;;:20;;;;;1875:3;1870:1;:8;;1858:20;1854:34;;;-1:-1:-1;1887:1:38;1880:8;;1854:34;1899:12;1914:9;1920:3;1914;:9;:::i;:::-;:13;;1926:1;1914:13;:::i;:::-;1899:28;;2122:1;2117;:6;;:18;;;;;2134:1;2127:4;:8;2117:18;2113:38;;;2144:7;2150:1;2144:3;:7;:::i;:::-;2137:14;;;;;2113:38;2170:15;2184:1;930:78;2170:15;:::i;:::-;2165:1;:20;;:46;;;;-1:-1:-1;2196:15:38;2210:1;930:78;2196:15;:::i;:::-;2189:4;:22;2165:46;2161:82;;;2227:15;2241:1;930:78;2227:15;:::i;:::-;2220:23;;:3;:23;:::i;2161:82::-;2347:3;2343:1;:7;2339:352;;;2366:12;2381:7;2385:3;2381:1;:7;:::i;:::-;2366:22;-1:-1:-1;2402:11:38;2416;2423:4;2366:22;2416:11;:::i;:::-;2402:25;;2445:3;2452:1;2445:8;2441:24;;2462:3;2455:10;;;;;;;2441:24;2500:1;2488:9;2494:3;2488;:9;:::i;:::-;:13;;;;:::i;:::-;2479:22;;2352:160;;2339:352;;;2526:3;2522:1;:7;2518:173;;;2545:12;2560:7;2566:1;2560:3;:7;:::i;:::-;2545:22;-1:-1:-1;2581:11:38;2595;2602:4;2545:22;2595:11;:::i;:::-;2581:25;;2624:3;2631:1;2624:8;2620:24;;2641:3;2634:10;;;;;;;2620:24;2667:9;2673:3;2667;:9;:::i;:::-;:13;;2679:1;2667:13;:::i;:::-;2658:22;;2531:160;;2518:173;1534:1163;1434:1263;;;;;:::o;9671:207::-;9747:11;702:42;-1:-1:-1;;;;;9763:36:38;9847:2;9851;9800:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9800:54:38;;;;;;;;;;;;;;;;;;;;9763:92;;;9800:54;9763:92;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:965:115;1505:41;;;;;;;;;;;;;;;;;;:32;:41::i;:::-;1497:49;;:5;:49;;;;-1:-1:-1;;;;;1497:49:115;;;;;;;;;;;;;;;;1638:42;;;;;;;;;;;;;;;;;;;;;;:32;:42::i;:::-;1629:51;;:6;:51;;;;-1:-1:-1;;;;;1629:51:115;;;;;;;;;;;;;;;;1706:21;;;;;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;1691:5;:37;;;;-1:-1:-1;;;;;1691:37:115;;;;;;;;;;1820:33;;-1:-1:-1;;1820:33:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1891:5:115;:10;1863:39;;;;;-1:-1:-1;;;;;1891:10:115;;;1863:39;;;320:74:122;1780:73:115;;-1:-1:-1;1863:27:115;;;;;293:18:122;;1863:39:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2042:5:115;;2012:36;;2031:9;;-1:-1:-1;;;;;;2042:5:115;;;;-1:-1:-1;2012:36:115;;;:::i;:::-;-1:-1:-1;;;;;49689:15:122;;;49671:34;;49741:15;;49736:2;49721:18;;49714:43;49598:2;49583:18;2012:36:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1999:10:115;:49;;;;-1:-1:-1;;;;;1999:49:115;;;;;;;;;2159:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;1999:49;2159:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2141:7;:44;;;;-1:-1:-1;;;;;2141:44:115;;;;;;2237:5;:10;2228:20;;;;;2237:10;;2228:20;;;320:74:122;2228:8:115;;;;293:18:122;;2228:20:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2278:6:115;:11;2258:32;;;;;-1:-1:-1;;;;;2278:11:115;;;2258:32;;;320:74:122;2258:19:115;;;;-1:-1:-1;2258:19:115;;-1:-1:-1;293:18:122;;2258:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:261:120;-1:-1:-1;;;;;;;;;;;;;;;;;468:10:120;516:4;499:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;499:22:120;;;;;;;489:33;;499:22;489:33;;;;548:11;;;;;;5265:25:122;;;489:33:120;-1:-1:-1;481:42:120;;206;;548:7;;5238:18:122;;548:11:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;569:20;;;;;533:26;;-1:-1:-1;206:42:120;;569:8;;:20;;533:26;;584:4;;569:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:21;;;;;;;;618:4;-1:-1:-1;;;;;606:21:120;;;;;624:2;606:21;;;599:28;;;;373:261;;;:::o;953:558:119:-;1163:9;1214:7;-1:-1:-1;;;;;1214:28:119;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1296:152:119;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;1297:495:120:-;1373:20;1410:9;1405:356;1429:8;:15;1425:1;:19;1405:356;;;1470:9;1482:5;:1;1486;1482:5;:::i;:::-;1470:17;;1465:286;1493:8;:15;1489:1;:19;1465:286;;;1556:8;1565:1;1556:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;:8;1546:1;1537:11;;;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;1537:35:120;;1533:204;;;1596:22;1621:8;1630:1;1621:11;;;;;;;;:::i;:::-;;;;;;;1596:36;;1668:8;1677:1;1668:11;;;;;;;;:::i;:::-;;;;;;;1654:8;1663:1;1654:11;;;;;;;;:::i;:::-;;;;;;:25;;;;1715:3;1701:8;1710:1;1701:11;;;;;;;;:::i;:::-;;;;;;:17;;;;1574:163;1533:204;1510:3;;;;:::i;:::-;;;;1465:286;;;-1:-1:-1;1446:3:120;;;;:::i;:::-;;;;1405:356;;7700:156:36;4573:12;;;:22;;;;-1:-1:-1;;;;;4573:22:36;;;;;-1:-1:-1;4573:12:36;7813:36;4467:156;7862:143;4728:9;;;:16;;;;;;;;;;;-1:-1:-1;4728:9:36;7968:30;4629:143;8167:152;5044:10;;;:47;;;;;;;8241:18;5044:47;;;;;;-1:-1:-1;;;;;5068:21:36;;5044:47;;;8302:4;8278:34;4940:179;8943:120;9023:33;9037:4;9051:3;9023:13;:33::i;789:312:29:-;859:1;854:6;;:1;:6;;;850:245;;881:41;;;;;52913:2:122;52895:21;;;52952:2;52932:18;;;52925:30;52991:34;52986:2;52971:18;;52964:62;53062:4;53057:2;53042:18;;53035:32;53099:3;53084:19;;52711:398;881:41:29;;;;;;;;941:52;972:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:52;;;;;;:::i;:::-;;;;;;;;1012;1043:1;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1012:52;;;;;;:::i;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;9297:1095:36:-;9391:12;;;;9427:9;;;;9468:11;;;;9512:10;;;9489:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9391:12:36;;;;9427:9;;;;;;9377:11;;9489:33;;9512:10;;9489:33;;9512:10;9489:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9533:17;9570:4;9576:12;9584:3;9576:7;:12::i;:::-;9553:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9553:36:36;;;;;;;;;-1:-1:-1;;;;;9604:15:36;;;;;;:10;;;9553:36;9604:15;;;;;;:21;;;;;;;;;;9553:36;;-1:-1:-1;9604:21:36;;:15;;9636:34;;9653:3;;9658:11;;9636:34;;:::i;:::-;;;;-1:-1:-1;;9636:34:36;;;;;;;;;9626:45;;9636:34;9626:45;;;;9604:68;;;;;;;;;;-1:-1:-1;9604:68:36;;;;9599:110;;9688:10;9693:4;9688;:10::i;:::-;;9599:110;-1:-1:-1;;;;;9741:15:36;;9718:12;9741:15;;;;;;;;;;;:21;;;;;;;;;;9773:34;;9741:21;;9718:12;;9773:34;;9790:3;;9795:11;;9773:34;;:::i;:::-;;;;;;;;;;;;;9763:45;;;;;;9741:68;;;;;;;;;;;;9733:77;;9718:92;;9821:12;9860:17;9881:3;-1:-1:-1;;;;;9881:14:36;9896:4;9881:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9857:44:36;-1:-1:-1;9922:38:36;;-1:-1:-1;9857:44:36;9943:16;9948:11;9943:2;:16;:::i;:::-;9922:14;:38::i;:::-;9995:18;;;;;-1:-1:-1;;;;;23424:55:122;;9995:18:36;;;23406:74:122;23496:18;;;23489:34;;;9915:45:36;;-1:-1:-1;9980:12:36;;-1:-1:-1;9995:7:36;;;;23379:18:122;;9995::36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9980:33;;10036:4;10028;:12;10024:218;;10056:175;;;;;54819:2:122;10056:175:36;;;54801:21:122;54858:3;54838:18;;;54831:31;54898:34;54878:18;;;54871:62;54969:34;54949:18;;;54942:62;55041:34;55020:19;;;55013:63;55113:17;55092:19;;;55085:46;55148:19;;10056:175:36;54617:556:122;10056:175:36;10251:24;;;;;-1:-1:-1;;;;;47810:55:122;;10251:24:36;;;47792:74:122;47882:18;;;47875:34;;;47925:18;;;47918:34;;;10251:8:36;;;;47765:18:122;;10251:24:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10292:12:36;;;10285:19;;;;;;-1:-1:-1;10321:9:36;;;10314:16;;;;;;10340:17;-1:-1:-1;10347:10:36;;10292:12;10340:17;:::i;:::-;10374:4;:11;;10367:18;;;9367:1025;;;;;;;;9297:1095;;:::o;15033:242:31:-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;15178:22:31;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;5265:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;5238:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;11471:393:36:-;11530:12;11554:19;11586:1;:8;11597:2;11586:13;;;;:::i;:::-;11576:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11576:24:36;;11554:46;;11615:9;11610:224;11634:1;:8;11630:1;:12;11610:224;;;11663:9;11675:1;11677;11675:4;;;;;;;;:::i;:::-;;;;;;;11663:16;;11808:1;11802;11798:2;11794:10;11790:2;11786:19;11778:6;11774:32;11767:43;11749:75;11644:3;;;;;:::i;:::-;;;;11610:224;;7579:115;7636:7;7662:25;7682:4;7662:19;:25::i;11110:304::-;11188:7;11207:11;11229;11254:2;11243:1;:8;:13;:29;;11264:1;:8;11243:29;;;11259:2;11243:29;11229:43;;11287:9;11282:106;11306:3;11302:1;:7;11282:106;;;11371:5;:1;11375;11371:5;:::i;:::-;11345:1;11347:10;11356:1;11347:6;:10;:::i;:::-;11345:13;;;;;;;;:::i;:::-;;;;;;;11337:40;;11330:47;;;;;11311:3;;;;:::i;:::-;;;;11282:106;;;-1:-1:-1;11404:3:36;;11110:304;-1:-1:-1;;;;11110:304:36:o;1264:3197::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:36;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:36;:15;;-1:-1:-1;1568:34:36;;-1:-1:-1;1452:33:36;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:36;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:36;;;;1532:174;;;-1:-1:-1;;;;;1627:15:36;;:10;:15;;;;;;;;;;;:21;;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3197;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:36;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:36;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:36;-1:-1:-1;1903:38:36;;-1:-1:-1;1838:44:36;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;;;;-1:-1:-1;;;;;338:55:122;;1990:25:36;;;320:74:122;1896:45:36;;-1:-1:-1;1963:22:36;;-1:-1:-1;1990:11:36;;;;293:18:122;;1990:25:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:36;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2060;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:36;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;23424:55:122;;;;23406:74;;23511:2;23496:18;;23489:34;23394:2;23379:18;;23232:297;2077:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:36;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;23424:55:122;;;23406:74;;23496:18;;;23489:34;23379:18;2160:44:36;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;;;;54819:2:122;2268:187:36;;;54801:21:122;54858:3;54838:18;;;54831:31;54898:34;54878:18;;;54871:62;54969:34;54949:18;;;54942:62;55041:34;55020:19;;;55013:63;55113:17;55092:19;;;55085:46;55148:19;;2268:187:36;54617:556:122;2268:187:36;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;56708:55:122;;;56690:74;;56812:66;56800:79;;;56780:18;;;56773:107;;;;56896:18;;;56889:34;56954:2;56939:18;;56932:34;56677:3;56662:19;2488:86:36;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:36;;2659:17;2588:15;;;;;;;;;;:21;;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:36;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:36;;;:88;;;;-1:-1:-1;;;;;2690:15:36;;;;2761:4;2690:10;;;:15;;;;;:21;;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:36;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:36;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:36;:75;;;;;;;;;;;;;-1:-1:-1;2025:2060:36;;;2801:1;2786:5;:12;:16;2782:1303;;;2823:9;2818:1152;2842:5;:12;2838:1;:16;2818:1152;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:36;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;23424:55:122;;;;23406:74;;23511:2;23496:18;;23489:34;23394:2;23379:18;;23232:297;2894:22:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:36;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;23424:55:122;;;23406:74;;23496:18;;;23489:34;23379:18;2985:44:36;;;;;;;2934:114;588:28;580:37;;-1:-1:-1;;;;;3090:8:36;;3099:3;3104:5;3110:1;3104:8;;;;;;;;:::i;:::-;;;;;;;;;;;3090:43;;;;;;;;;;-1:-1:-1;;;;;47810:55:122;;;3090:43:36;;;47792:74:122;47882:18;;;47875:34;3114:18:36;47925::122;;;47918:34;47765:18;;3090:43:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3151:12;3181:17;3256:3;-1:-1:-1;;;;;3256:14:36;3271:4;3256:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3238:38:36;;-1:-1:-1;3238:38:36;-1:-1:-1;3305:38:36;3238;3326:16;3331:11;3326:2;:16;:::i;3305:38::-;3298:45;;3384:7;:37;;;;;3403:18;3395:4;:26;3384:37;3380:529;;;3519:86;3529:3;3534:4;3567:3;3572:11;3550:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:45;;;;;;3595:5;3601:1;3595:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3519:86;;;-1:-1:-1;;;;;56708:55:122;;;56690:74;;56812:66;56800:79;;;56780:18;;;56773:107;;;;56896:18;;;56889:34;56954:2;56939:18;;56932:34;56677:3;56662:19;3519:86:36;;;;;;;3706:5;3712:1;3706:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3627:15:36;;3698:17;3627:15;;;;;;;;;;:21;;;;;;;;;;3659:34;;3706:8;;3627:21;;3659:34;;3676:3;;3681:11;;3659:34;;:::i;:::-;;;;;;;;;;;;;3649:45;;;;;;3627:68;;;;;;;;;;;:88;;;;3808:4;3737;:10;;:15;3748:3;-1:-1:-1;;;;;3737:15:36;-1:-1:-1;;;;;3737:15:36;;;;;;;;;;;;:21;3753:4;3737:21;;;;;;;;;;;;;;;;;:68;3786:3;3791:11;3769:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3759:45;;;;;;3737:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3834:8:36;;3843:3;3848:5;3854:1;3848:8;;;;;;;;:::i;:::-;;;;;;;;;;;3834:29;;;;;;;;;;-1:-1:-1;;;;;47810:55:122;;;3834:29:36;;;47792:74:122;47882:18;;;47875:34;47925:18;;;47918:34;;;47765:18;;3834:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:5;;;;;3380:529;588:28;580:37;;-1:-1:-1;;;;;3926:8:36;;3935:3;3940:5;3946:1;3940:8;;;;;;;;:::i;:::-;;;;;;;;;;;3926:29;;;;;;;;;;-1:-1:-1;;;;;47810:55:122;;;3926:29:36;;;47792:74:122;47882:18;;;47875:34;47925:18;;;47918:34;;;47765:18;;3926:29:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1109;;;2856:3;;;;;:::i;:::-;;;;2818:1152;;;;2782:1303;;;4000:74;;;;;;57179:2:122;4000:74:36;;;57161:21:122;57198:18;;;57191:30;;;;57257:34;57237:18;;;57230:62;57328:34;57308:18;;;57301:62;57380:19;;4000:74:36;56977:428:122;2782:1303:36;-1:-1:-1;;;;;4116:15:36;;;;;;:10;;;:15;;;;;;;;:21;;;;;;;;;;4148:34;;4116:21;;:15;4148:34;;4165:3;;4170:11;;4148:34;;:::i;:::-;;;;-1:-1:-1;;4148:34:36;;;;;;;;;4138:45;;4148:34;4138:45;;;;4116:68;;;;;;;;;;-1:-1:-1;4116:68:36;;;;4095:162;;;;;;;57612:2:122;4095:162:36;;;57594:21:122;57651:2;57631:18;;;57624:30;57690:34;57670:18;;;57663:62;57761:17;57741:18;;;57734:45;57796:19;;4095:162:36;57410:411:122;4095:162:36;4275:12;;;4268:19;;;;;;4304:9;;;4297:16;;;;;;4323:17;-1:-1:-1;4330:10:36;;4275:12;4323:17;:::i;:::-;4350:18;4357:11;;;4350:18;;;-1:-1:-1;;;;;4386:15:36;;;;;;;;;;;;:21;;;;;;;;;;4418:34;;4386:21;;4350:18;4418:34;;4435:3;;4440:11;;4418:34;;:::i;:::-;;;;;;;;;;;;;4408:45;;;;;;4386:68;;;;;;;;;;;;4379:75;;;;;;;;;1264:3197;;;:::o;6942:393::-;7001:12;7025:19;7057:1;:8;7068:2;7057:13;;;;:::i;:::-;7047:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7047:24:36;;7025:46;;7086:9;7081:224;7105:1;:8;7101:1;:12;7081:224;;;7134:9;7146:1;7148;7146:4;;;;;;;;:::i;:::-;;;;;;;7134:16;;7279:1;7273;7269:2;7265:10;7261:2;7257:19;7249:6;7245:32;7238:43;7220:75;7115:3;;;;;:::i;:::-;;;;7081:224;;6632:304;6710:7;6729:11;6751;6776:2;6765:1;:8;:13;:29;;6786:1;:8;6765:29;;;6781:2;6765:29;6751:43;;6809:9;6804:106;6828:3;6824:1;:7;6804:106;;;6893:5;:1;6897;6893:5;:::i;:::-;6867:1;6869:10;6878:1;6869:6;:10;:::i;:::-;6867:13;;;;;;;;:::i;:::-;;;;;;;6859:40;;6852:47;;;;;6833:3;;;;:::i;:::-;;;;6804:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;651:180:122:-;710:6;763:2;751:9;742:7;738:23;734:32;731:52;;;779:1;776;769:12;731:52;-1:-1:-1;802:23:122;;651:180;-1:-1:-1;651:180:122:o;836:250::-;921:1;931:113;945:6;942:1;939:13;931:113;;;1021:11;;;1015:18;1002:11;;;995:39;967:2;960:10;931:113;;;-1:-1:-1;;1078:1:122;1060:16;;1053:27;836:250::o;1091:329::-;1132:3;1170:5;1164:12;1197:6;1192:3;1185:19;1213:76;1282:6;1275:4;1270:3;1266:14;1259:4;1252:5;1248:16;1213:76;:::i;:::-;1334:2;1322:15;-1:-1:-1;;1318:88:122;1309:98;;;;1409:4;1305:109;;1091:329;-1:-1:-1;;1091:329:122:o;1425:435::-;-1:-1:-1;;;;;1659:6:122;1655:55;1644:9;1637:74;1747:6;1742:2;1731:9;1727:18;1720:34;1790:2;1785;1774:9;1770:18;1763:30;1618:4;1810:44;1850:2;1839:9;1835:18;1827:6;1810:44;:::i;1865:248::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:52;;;2010:1;2007;2000:12;1962:52;-1:-1:-1;;2033:23:122;;;2103:2;2088:18;;;2075:32;;-1:-1:-1;1865:248:122:o;2118:484::-;2171:3;2209:5;2203:12;2236:6;2231:3;2224:19;2262:4;2291:2;2286:3;2282:12;2275:19;;2328:2;2321:5;2317:14;2349:1;2359:218;2373:6;2370:1;2367:13;2359:218;;;2438:13;;-1:-1:-1;;;;;2434:62:122;2422:75;;2517:12;;;;2552:15;;;;2395:1;2388:9;2359:218;;;-1:-1:-1;2593:3:122;;2118:484;-1:-1:-1;;;;;2118:484:122:o;2607:261::-;2786:2;2775:9;2768:21;2749:4;2806:56;2858:2;2847:9;2843:18;2835:6;2806:56;:::i;3123:184::-;3175:77;3172:1;3165:88;3272:4;3269:1;3262:15;3296:4;3293:1;3286:15;3312:255;3384:2;3378:9;3426:6;3414:19;;3463:18;3448:34;;3484:22;;;3445:62;3442:88;;;3510:18;;:::i;:::-;3546:2;3539:22;3312:255;:::o;3572:334::-;3643:2;3637:9;3699:2;3689:13;;-1:-1:-1;;3685:86:122;3673:99;;3802:18;3787:34;;3823:22;;;3784:62;3781:88;;;3849:18;;:::i;:::-;3885:2;3878:22;3572:334;;-1:-1:-1;3572:334:122:o;3911:183::-;3971:4;4004:18;3996:6;3993:30;3990:56;;;4026:18;;:::i;:::-;-1:-1:-1;4071:1:122;4067:14;4083:4;4063:25;;3911:183::o;4099:662::-;4153:5;4206:3;4199:4;4191:6;4187:17;4183:27;4173:55;;4224:1;4221;4214:12;4173:55;4260:6;4247:20;4286:4;4310:60;4326:43;4366:2;4326:43;:::i;:::-;4310:60;:::i;:::-;4404:15;;;4490:1;4486:10;;;;4474:23;;4470:32;;;4435:12;;;;4514:15;;;4511:35;;;4542:1;4539;4532:12;4511:35;4578:2;4570:6;4566:15;4590:142;4606:6;4601:3;4598:15;4590:142;;;4672:17;;4660:30;;4710:12;;;;4623;;4590:142;;4766:348;4850:6;4903:2;4891:9;4882:7;4878:23;4874:32;4871:52;;;4919:1;4916;4909:12;4871:52;4959:9;4946:23;4992:18;4984:6;4981:30;4978:50;;;5024:1;5021;5014:12;4978:50;5047:61;5100:7;5091:6;5080:9;5076:22;5047:61;:::i;5301:121::-;5386:10;5379:5;5375:22;5368:5;5365:33;5355:61;;5412:1;5409;5402:12;5427:313;5494:6;5502;5555:2;5543:9;5534:7;5530:23;5526:32;5523:52;;;5571:1;5568;5561:12;5523:52;5610:9;5597:23;5629:30;5653:5;5629:30;:::i;:::-;5678:5;5730:2;5715:18;;;;5702:32;;-1:-1:-1;;;5427:313:122:o;6007:484::-;6109:6;6117;6125;6178:2;6166:9;6157:7;6153:23;6149:32;6146:52;;;6194:1;6191;6184:12;6146:52;6230:9;6217:23;6207:33;;6291:2;6280:9;6276:18;6263:32;6318:18;6310:6;6307:30;6304:50;;;6350:1;6347;6340:12;6304:50;6373:61;6426:7;6417:6;6406:9;6402:22;6373:61;:::i;:::-;6363:71;;;6481:2;6470:9;6466:18;6453:32;6443:42;;6007:484;;;;;:::o;6784:1697::-;6988:4;7017:2;7057;7046:9;7042:18;7087:2;7076:9;7069:21;7110:6;7145;7139:13;7176:6;7168;7161:22;7202:2;7192:12;;7235:2;7224:9;7220:18;7213:25;;7297:2;7287:6;7284:1;7280:14;7269:9;7265:30;7261:39;7335:2;7327:6;7323:15;7356:1;7377;7387:1065;7403:6;7398:3;7395:15;7387:1065;;;7472:22;;;7496:66;7468:95;7456:108;;7587:13;;7674:9;;-1:-1:-1;;;;;7670:58:122;7655:74;;7768:11;;7762:18;7800:15;;;7793:27;;;7881:19;;7627:15;;;7913:24;;;8003:21;;;;8048:1;;7971:2;7959:15;;;8062:282;8078:8;8073:3;8070:17;8062:282;;;8159:15;;8176:66;8155:88;8141:103;;8313:17;;;;8106:1;8097:11;;;;;8270:14;;;;8062:282;;;-1:-1:-1;8430:12:122;;;;8367:5;-1:-1:-1;;;8395:15:122;;;;7429:1;7420:11;7387:1065;;;-1:-1:-1;8469:6:122;;6784:1697;-1:-1:-1;;;;;;;;;6784:1697:122:o;8717:861::-;8879:4;8908:2;8948;8937:9;8933:18;8978:2;8967:9;8960:21;9001:6;9036;9030:13;9067:6;9059;9052:22;9105:2;9094:9;9090:18;9083:25;;9167:2;9157:6;9154:1;9150:14;9139:9;9135:30;9131:39;9117:53;;9205:2;9197:6;9193:15;9226:1;9236:313;9250:6;9247:1;9244:13;9236:313;;;9339:66;9327:9;9319:6;9315:22;9311:95;9306:3;9299:108;9430:39;9462:6;9453;9447:13;9430:39;:::i;:::-;9420:49;-1:-1:-1;9527:12:122;;;;9492:15;;;;9272:1;9265:9;9236:313;;;-1:-1:-1;9566:6:122;;8717:861;-1:-1:-1;;;;;;;8717:861:122:o;10034:416::-;10127:6;10135;10188:2;10176:9;10167:7;10163:23;10159:32;10156:52;;;10204:1;10201;10194:12;10156:52;10244:9;10231:23;10277:18;10269:6;10266:30;10263:50;;;10309:1;10306;10299:12;10263:50;10332:61;10385:7;10376:6;10365:9;10361:22;10332:61;:::i;:::-;10322:71;10440:2;10425:18;;;;10412:32;;-1:-1:-1;;;;10034:416:122:o;10455:435::-;10508:3;10546:5;10540:12;10573:6;10568:3;10561:19;10599:4;10628:2;10623:3;10619:12;10612:19;;10665:2;10658:5;10654:14;10686:1;10696:169;10710:6;10707:1;10704:13;10696:169;;;10771:13;;10759:26;;10805:12;;;;10840:15;;;;10732:1;10725:9;10696:169;;10895:261;11074:2;11063:9;11056:21;11037:4;11094:56;11146:2;11135:9;11131:18;11123:6;11094:56;:::i;11418:523::-;11492:6;11500;11508;11561:2;11549:9;11540:7;11536:23;11532:32;11529:52;;;11577:1;11574;11567:12;11529:52;11616:9;11603:23;11635:30;11659:5;11635:30;:::i;:::-;11684:5;-1:-1:-1;11741:2:122;11726:18;;11713:32;11754;11713;11754;:::i;:::-;11805:7;-1:-1:-1;11864:2:122;11849:18;;11836:32;11877;11836;11877;:::i;:::-;11928:7;11918:17;;;11418:523;;;;;:::o;12905:454::-;13000:6;13008;13016;13024;13032;13085:3;13073:9;13064:7;13060:23;13056:33;13053:53;;;13102:1;13099;13092:12;13053:53;-1:-1:-1;;13125:23:122;;;13195:2;13180:18;;13167:32;;-1:-1:-1;13246:2:122;13231:18;;13218:32;;13297:2;13282:18;;13269:32;;-1:-1:-1;13348:3:122;13333:19;13320:33;;-1:-1:-1;12905:454:122;-1:-1:-1;12905:454:122:o;13864:184::-;13916:77;13913:1;13906:88;14013:4;14010:1;14003:15;14037:4;14034:1;14027:15;14053:125;14118:9;;;14139:10;;;14136:36;;;14152:18;;:::i;14183:168::-;14256:9;;;14287;;14304:15;;;14298:22;;14284:37;14274:71;;14325:18;;:::i;14356:370::-;-1:-1:-1;;;;;14461:5:122;14455:12;14451:61;14446:3;14439:74;14562:4;14555:5;14551:16;14545:23;14538:4;14533:3;14529:14;14522:47;14421:3;14615:4;14608:5;14604:16;14598:23;14653:4;14646;14641:3;14637:14;14630:28;14674:46;14714:4;14709:3;14705:14;14691:12;14674:46;:::i;14731:791::-;-1:-1:-1;;;;;15098:6:122;15094:55;15083:9;15076:74;15186:3;15181:2;15170:9;15166:18;15159:31;15057:4;15213:69;15277:3;15266:9;15262:19;15254:6;15213:69;:::i;:::-;15330:9;15322:6;15318:22;15313:2;15302:9;15298:18;15291:50;15364:32;15389:6;15381;15364:32;:::i;:::-;15350:46;;15444:9;15436:6;15432:22;15427:2;15416:9;15412:18;15405:50;15472:44;15509:6;15501;15472:44;:::i;15527:162::-;-1:-1:-1;;;;;15614:5:122;15610:54;15603:5;15600:65;15590:93;;15679:1;15676;15669:12;15694:154;15781:13;;15803:39;15781:13;15803:39;:::i;15853:136::-;15931:13;;15953:30;15931:13;15953:30;:::i;15994:164::-;16070:13;;16119;;16112:21;16102:32;;16092:60;;16148:1;16145;16138:12;16163:1094;16225:5;16273:6;16261:9;16256:3;16252:19;16248:32;16245:52;;;16293:1;16290;16283:12;16245:52;16315:22;;:::i;:::-;16306:31;;16360:48;16398:9;16360:48;:::i;:::-;16353:5;16346:63;16441:57;16494:2;16483:9;16479:18;16441:57;:::i;:::-;16436:2;16429:5;16425:14;16418:81;16531:57;16584:2;16573:9;16569:18;16531:57;:::i;:::-;16526:2;16519:5;16515:14;16508:81;16642:2;16631:9;16627:18;16621:25;16616:2;16609:5;16605:14;16598:49;16701:3;16690:9;16686:19;16680:26;16674:3;16667:5;16663:15;16656:51;16740:49;16784:3;16773:9;16769:19;16740:49;:::i;:::-;16734:3;16727:5;16723:15;16716:74;16844:3;16833:9;16829:19;16823:26;16817:3;16810:5;16806:15;16799:51;16904:3;16893:9;16889:19;16883:26;16877:3;16870:5;16866:15;16859:51;16929:3;16985:2;16974:9;16970:18;16964:25;16959:2;16952:5;16948:14;16941:49;;17009:3;17044:46;17086:2;17075:9;17071:18;17044:46;:::i;:::-;17028:14;;;17021:70;17110:3;17151:18;;;17145:25;17129:14;;;17122:49;17190:3;17231:18;;;17225:25;17209:14;;;17202:49;;;;17032:5;16163:1094;-1:-1:-1;16163:1094:122:o;17262:907::-;17372:6;17380;17433:3;17421:9;17412:7;17408:23;17404:33;17401:53;;;17450:1;17447;17440:12;17401:53;17473;17518:7;17507:9;17473:53;:::i;:::-;17463:63;;17570:3;17559:9;17555:19;17549:26;17594:18;17635:2;17627:6;17624:14;17621:34;;;17651:1;17648;17641:12;17621:34;17689:6;17678:9;17674:22;17664:32;;17734:7;17727:4;17723:2;17719:13;17715:27;17705:55;;17756:1;17753;17746:12;17705:55;17785:2;17779:9;17807:2;17803;17800:10;17797:36;;;17813:18;;:::i;:::-;17855:114;17963:4;-1:-1:-1;;17887:4:122;17883:2;17879:13;17875:86;17871:97;17855:114;:::i;:::-;17842:127;;17992:2;17985:5;17978:17;18034:7;18027:4;18022:2;18018;18014:11;18010:22;18007:35;18004:55;;;18055:1;18052;18045:12;18004:55;18068:71;18136:2;18129:4;18122:5;18118:16;18111:4;18107:2;18103:13;18068:71;:::i;:::-;;18158:5;18148:15;;;;17262:907;;;;;:::o;18174:437::-;18253:1;18249:12;;;;18296;;;18317:61;;18371:4;18363:6;18359:17;18349:27;;18317:61;18424:2;18416:6;18413:14;18393:18;18390:38;18387:218;;18461:77;18458:1;18451:88;18562:4;18559:1;18552:15;18590:4;18587:1;18580:15;18387:218;;18174:437;;;:::o;18616:249::-;18687:10;18729;;;18741;;;18725:27;18772:20;;;;18687:10;18811:24;;;18801:58;;18839:18;;:::i;:::-;18801:58;;18616:249;;;;:::o;18870:128::-;18937:9;;;18958:11;;;18955:37;;;18972:18;;:::i;19003:184::-;19055:77;19052:1;19045:88;19152:4;19149:1;19142:15;19176:4;19173:1;19166:15;19192:112;19224:1;19250;19240:35;;19255:18;;:::i;:::-;-1:-1:-1;19289:9:122;;19192:112::o;19309:980::-;19527:13;;-1:-1:-1;;;;;86:54:122;74:67;;19489:3;19474:19;;19599:4;19591:6;19587:17;19581:24;19614:60;19668:4;19657:9;19653:20;19639:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;19614:60;;19723:4;19715:6;19711:17;19705:24;19738:62;19794:4;19783:9;19779:20;19763:14;-1:-1:-1;;;;;86:54:122;74:67;;14:133;19738:62;;19856:4;19848:6;19844:17;19838:24;19831:4;19820:9;19816:20;19809:54;19919:4;19911:6;19907:17;19901:24;19894:4;19883:9;19879:20;19872:54;19982:4;19974:6;19970:17;19964:24;19957:4;19946:9;19942:20;19935:54;20045:4;20037:6;20033:17;20027:24;20020:4;20009:9;20005:20;19998:54;20108:4;20100:6;20096:17;20090:24;20083:4;20072:9;20068:20;20061:54;20134:6;20194:2;20186:6;20182:15;20176:22;20171:2;20160:9;20156:18;20149:50;;20218:6;20278:2;20270:6;20266:15;20260:22;20255:2;20244:9;20240:18;20233:50;;19309:980;;;;:::o;20294:672::-;20534:4;-1:-1:-1;;;;;20644:2:122;20636:6;20632:15;20621:9;20614:34;20696:2;20688:6;20684:15;20679:2;20668:9;20664:18;20657:43;;20736:6;20731:2;20720:9;20716:18;20709:34;20779:3;20774:2;20763:9;20759:18;20752:31;20806:45;20846:3;20835:9;20831:19;20823:6;20806:45;:::i;:::-;20900:9;20892:6;20888:22;20882:3;20871:9;20867:19;20860:51;20928:32;20953:6;20945;20928:32;:::i;:::-;20920:40;20294:672;-1:-1:-1;;;;;;;;20294:672:122:o;20971:244::-;21063:6;21116:3;21104:9;21095:7;21091:23;21087:33;21084:53;;;21133:1;21130;21123:12;21084:53;21156;21201:7;21190:9;21156:53;:::i;21220:219::-;21369:2;21358:9;21351:21;21332:4;21389:44;21429:2;21418:9;21414:18;21406:6;21389:44;:::i;22070:184::-;22122:77;22119:1;22112:88;22219:4;22216:1;22209:15;22243:4;22240:1;22233:15;22259:184;22329:6;22382:2;22370:9;22361:7;22357:23;22353:32;22350:52;;;22398:1;22395;22388:12;22350:52;-1:-1:-1;22421:16:122;;22259:184;-1:-1:-1;22259:184:122:o;22448:172::-;22515:10;22545;;;22557;;;22541:27;;22580:11;;;22577:37;;;22594:18;;:::i;22922:305::-;23133:2;23122:9;23115:21;23096:4;23153:68;23217:2;23206:9;23202:18;23194:6;23153:68;:::i;23534:288::-;23709:6;23698:9;23691:25;23752:2;23747;23736:9;23732:18;23725:30;23672:4;23772:44;23812:2;23801:9;23797:18;23789:6;23772:44;:::i;23827:336::-;23896:6;23949:2;23937:9;23928:7;23924:23;23920:32;23917:52;;;23965:1;23962;23955:12;23917:52;23997:9;23991:16;24047:66;24040:5;24036:78;24029:5;24026:89;24016:117;;24129:1;24126;24119:12;24168:175;24236:10;24279;;;24267;;;24263:27;;24302:12;;;24299:38;;;24317:18;;:::i;24672:291::-;24774:6;24827:2;24815:9;24806:7;24802:23;24798:32;24795:52;;;24843:1;24840;24833:12;24795:52;24875:9;24869:16;24894:39;24927:5;24894:39;:::i;25373:430::-;25570:66;25562:6;25558:79;25553:3;25546:92;25528:3;25667:6;25661:13;25683:74;25750:6;25746:1;25741:3;25737:11;25730:4;25722:6;25718:17;25683:74;:::i;:::-;25777:16;;;;25795:1;25773:24;;25373:430;-1:-1:-1;;;25373:430:122:o;25808:287::-;25937:3;25975:6;25969:13;25991:66;26050:6;26045:3;26038:4;26030:6;26026:17;25991:66;:::i;:::-;26073:16;;;;;25808:287;-1:-1:-1;;25808:287:122:o;26100:202::-;26167:6;26220:2;26208:9;26199:7;26195:23;26191:32;26188:52;;;26236:1;26233;26226:12;26188:52;26259:37;26286:9;26259:37;:::i;26307:1999::-;26675:4;26704:3;-1:-1:-1;;;;;26807:2:122;26799:6;26795:15;26784:9;26777:34;26859:2;26851:6;26847:15;26842:2;26831:9;26827:18;26820:43;;26899:6;26894:2;26883:9;26879:18;26872:34;26942:6;26937:2;26926:9;26922:18;26915:34;26986:6;26980:3;26969:9;26965:19;26958:35;27030:2;27024:3;27013:9;27009:19;27002:31;27056:44;27096:2;27085:9;27081:18;27073:6;27056:44;:::i;:::-;27042:58;;27149:9;27141:6;27137:22;27131:3;27120:9;27116:19;27109:51;27177:32;27202:6;27194;27177:32;:::i;:::-;27169:40;;;27218:60;27273:3;27262:9;27258:19;27249:6;27243:13;-1:-1:-1;;;;;86:54:122;74:67;;14:133;27218:60;27325:2;27317:6;27313:15;27307:22;27348:3;27360:58;27414:2;27403:9;27399:18;27385:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;27360:58;27467:2;27459:6;27455:15;27449:22;27427:44;;27490:3;27502:60;27558:2;27547:9;27543:18;27527:14;-1:-1:-1;;;;;86:54:122;74:67;;14:133;27502:60;27599:2;27587:15;;27581:22;27622:3;27641:18;;;27634:30;;;;27701:3;27689:16;;27683:23;27725:3;27744:18;;;27737:30;;;;27816:3;27804:16;;27798:23;22701:10;22690:22;27879:3;27864:19;;22678:35;27939:3;27927:16;;27921:23;27915:3;27900:19;;27893:52;28000:3;27988:16;;27982:23;27976:3;27961:19;;27954:52;28049:15;;;28043:22;28037:3;28022:19;;28015:51;28103:15;;;28097:22;6566:13;6559:21;28175:3;28160:19;;6547:34;28223:15;;28217:22;28211:3;28196:19;;28189:51;28283:15;;;28277:22;28271:3;28256:19;;;28249:51;;;;26307:1999;;-1:-1:-1;;;;;;;;26307:1999:122:o;28500:407::-;28583:5;28623;28617:12;28665:4;28658:5;28654:16;28648:23;28690:66;28782:2;28778;28774:11;28765:20;;28808:1;28800:6;28797:13;28794:107;;;28869:1;28865:14;;;;28862:1;28858:22;28854:31;;;28846:40;28842:49;;28500:407;-1:-1:-1;;28500:407:122:o;29725:195::-;29764:3;29795:66;29788:5;29785:77;29782:103;;29865:18;;:::i;:::-;-1:-1:-1;29912:1:122;29901:13;;29725:195::o;29925:120::-;29965:1;29991;29981:35;;29996:18;;:::i;:::-;-1:-1:-1;30030:9:122;;29925:120::o;30779:544::-;30880:2;30875:3;30872:11;30869:448;;;30916:1;30941:5;30937:2;30930:17;30986:4;30982:2;30972:19;31056:2;31044:10;31040:19;31037:1;31033:27;31027:4;31023:38;31092:4;31080:10;31077:20;31074:47;;;-1:-1:-1;31115:4:122;31074:47;31170:2;31165:3;31161:12;31158:1;31154:20;31148:4;31144:31;31134:41;;31225:82;31243:2;31236:5;31233:13;31225:82;;;31288:17;;;31269:1;31258:13;31225:82;;31559:1467;31683:3;31677:10;31710:18;31702:6;31699:30;31696:56;;;31732:18;;:::i;:::-;31761:96;31850:6;31810:38;31842:4;31836:11;31810:38;:::i;:::-;31804:4;31761:96;:::i;:::-;31912:4;;31976:2;31965:14;;31993:1;31988:781;;;;32813:1;32830:6;32827:89;;;-1:-1:-1;32882:19:122;;;32876:26;32827:89;31465:66;31456:1;31452:11;;;31448:84;31444:89;31434:100;31540:1;31536:11;;;31431:117;32929:81;;31958:1062;;31988:781;30726:1;30719:14;;;30763:4;30750:18;;-1:-1:-1;;32024:79:122;;;32200:236;32214:7;32211:1;32208:14;32200:236;;;32303:19;;;32297:26;32282:42;;32395:27;;;;32363:1;32351:14;;;;32230:19;;32200:236;;;32204:3;32464:6;32455:7;32452:19;32449:261;;;32525:19;;;32519:26;32626:66;32608:1;32604:14;;;32620:3;32600:24;32596:97;32592:102;32577:118;32562:134;;32449:261;-1:-1:-1;;;;;32756:1:122;32740:14;;;32736:22;32723:36;;-1:-1:-1;31559:1467:122:o;33467:465::-;33672:6;33661:9;33654:25;33715:2;33710;33699:9;33695:18;33688:30;33760:6;33754:13;33749:2;33738:9;33734:18;33727:41;33635:4;33815:2;33807:6;33803:15;33797:22;33855:2;33850;33839:9;33835:18;33828:30;33875:51;33921:3;33910:9;33906:19;33892:12;33875:51;:::i;33937:443::-;34145:66;34136:6;34132:2;34128:15;34124:88;34119:3;34112:101;34094:3;34242:6;34236:13;34258:75;34326:6;34321:2;34316:3;34312:12;34305:4;34297:6;34293:17;34258:75;:::i;:::-;34353:16;;;;34371:2;34349:25;;33937:443;-1:-1:-1;;;33937:443:122:o;34385:1493::-;34448:3;34479;34520:2;34554;34547:5;34543:14;34580:5;34603:1;34624;34634:1218;34650:4;34645:3;34642:13;34634:1218;;;34713:16;;;34701:29;;34753:13;;34823:9;;34845:20;;;34888:4;35017:11;;;;34914:13;;;;34823:9;34972:1;34968:14;;;34958:25;;34954:34;;35052:1;35066:679;35082:6;35077:3;35074:15;35066:679;;;35161:17;;;-1:-1:-1;;35157:90:122;35143:105;;35275:15;;35326:9;;-1:-1:-1;;;;;35322:58:122;35307:74;;35428:11;;;35422:18;35405:15;;;35398:43;35468:4;35515:11;;;35509:18;35551:15;;;35544:27;;;35598:47;35629:15;;;35509:18;35598:47;:::i;:::-;35674:17;;;;35717:14;;;;35588:57;-1:-1:-1;;35108:1:122;35099:11;35066:679;;;-1:-1:-1;35830:12:122;;;;35766:6;-1:-1:-1;35795:15:122;;;;;-1:-1:-1;;;34674:1:122;34665:11;34634:1218;;;-1:-1:-1;35868:4:122;;34385:1493;-1:-1:-1;;;;;;;34385:1493:122:o;35883:3025::-;36437:3;36490:21;;;36560:13;;36463:18;;;36582:22;;;36408:4;;36437:3;36623;;36642:18;;;;36679:4;36706:15;;;36408:4;36749:218;36763:6;36760:1;36757:13;36749:218;;;36828:13;;-1:-1:-1;;;;;36824:62:122;36812:75;;36907:12;;;;36942:15;;;;36785:1;36778:9;36749:218;;;36753:3;;37012:9;37007:3;37003:19;36998:2;36987:9;36983:18;36976:47;37046:41;37083:3;37075:6;37046:41;:::i;:::-;37032:55;;37106:2;37096:12;;37156:9;37148:6;37144:22;37139:2;37128:9;37124:18;37117:50;37189:6;37226;37220:13;37257:8;37249:6;37242:24;37296:2;37288:6;37284:15;37275:24;;37357:2;37345:8;37342:1;37338:16;37330:6;37326:29;37322:38;37397:2;37389:6;37385:15;37420:1;37430:1340;37446:8;37441:3;37438:17;37430:1340;;;-1:-1:-1;;37531:6:122;37523;37519:19;37515:92;37508:5;37501:107;37637:8;37631:15;37669:6;37709:2;37703:9;37695:6;37688:25;37764:2;37760;37756:11;37750:18;37745:2;37737:6;37733:15;37726:43;37816:2;37812;37808:11;37802:18;37833:55;37884:2;37876:6;37872:15;37858:12;-1:-1:-1;;;;;86:54:122;74:67;;14:133;37833:55;-1:-1:-1;37911:4:122;37958:11;;;37952:18;37935:15;;;37928:43;38014:11;;;38008:18;37991:15;;;37984:43;38068:11;;;38062:18;22701:10;22690:22;38127:15;;;22678:35;38166:4;38213:11;;;38207:18;38190:15;;;38183:43;38249:4;38296:11;;;38290:18;38273:15;;;38266:43;38333:6;38383:12;;;38377:19;38359:16;;;38352:45;38421:6;38471:12;;;38465:19;38447:16;;;38440:45;38509:6;38556:12;;;38550:19;38589:16;;;38582:28;;;38633:49;38666:15;;;38550:19;38633:49;:::i;:::-;38746:14;;;;38623:59;-1:-1:-1;;;38707:17:122;;;;37474:1;37465:11;37430:1340;;;37434:3;;38820:9;38812:6;38808:22;38801:4;38790:9;38786:20;38779:52;38848:54;38895:6;38887;38848:54;:::i;:::-;38840:62;35883:3025;-1:-1:-1;;;;;;;;;;;;;;35883:3025:122:o;39736:348::-;39966:2;39955:9;39948:21;39929:4;39986:49;40031:2;40020:9;40016:18;39649:2;39637:15;;39684:12;39677:4;39668:14;;39661:36;39722:2;39713:12;;39572:159;39986:49;39978:57;;40071:6;40066:2;40055:9;40051:18;40044:34;39736:348;;;;:::o;40253:::-;40483:2;40472:9;40465:21;40446:4;40503:49;40548:2;40537:9;40533:18;40166:2;40154:15;;40201:12;40194:4;40185:14;;40178:36;40239:2;40230:12;;40089:159;41364:397;41594:2;41583:9;41576:21;41557:4;41614:49;41659:2;41648:9;41644:18;39649:2;39637:15;;39684:12;39677:4;39668:14;;39661:36;39722:2;39713:12;;39572:159;41614:49;41606:57;;-1:-1:-1;;;;;41703:6:122;41699:55;41694:2;41683:9;41679:18;41672:83;41364:397;;;;:::o;41766:::-;41996:2;41985:9;41978:21;41959:4;42016:49;42061:2;42050:9;42046:18;40166:2;40154:15;;40201:12;40194:4;40185:14;;40178:36;40239:2;40230:12;;40089:159;42168:445;42418:2;42407:9;42400:21;42457:1;42452:2;42441:9;42437:18;42430:29;42495:7;42490:2;42479:9;42475:18;42468:35;42541:3;42534:4;42523:9;42519:20;42512:33;42381:4;42562:45;42602:3;42591:9;42587:19;42579:6;42562:45;:::i;42618:184::-;42670:77;42667:1;42660:88;42767:4;42764:1;42757:15;42791:4;42788:1;42781:15;42807:184;42859:77;42856:1;42849:88;42956:4;42953:1;42946:15;42980:4;42977:1;42970:15;42996:294;43077:1;43070:5;43067:12;43057:200;;43113:77;43110:1;43103:88;43214:4;43211:1;43204:15;43242:4;43239:1;43232:15;43057:200;43266:18;;42996:294::o;43295:1028::-;43694:4;43723:3;-1:-1:-1;;;;;43826:2:122;43818:6;43814:15;43803:9;43796:34;43866:6;43861:2;43850:9;43846:18;43839:34;43909:2;43904;43893:9;43889:18;43882:30;43929:44;43969:2;43958:9;43954:18;43946:6;43929:44;:::i;:::-;43921:52;;43982:53;44031:2;44020:9;44016:18;44008:6;43982:53;:::i;:::-;44066:3;44051:19;;44044:35;;;;-1:-1:-1;44110:3:122;44095:19;;44088:35;;;;44154:3;44139:19;;44132:35;;;;44204:15;;;44198:3;44183:19;;44176:44;44257:15;;;44251:3;44236:19;;44229:44;44304:3;44289:19;44282:35;;;;43295:1028;;-1:-1:-1;;;;43295:1028:122:o;44328:492::-;44503:3;44541:6;44535:13;44557:66;44616:6;44611:3;44604:4;44596:6;44592:17;44557:66;:::i;:::-;44686:13;;44645:16;;;;44708:70;44686:13;44645:16;44755:4;44743:17;;44708:70;:::i;:::-;44794:20;;44328:492;-1:-1:-1;;;;44328:492:122:o;44825:1133::-;45258:4;45287:3;-1:-1:-1;;;;;45390:2:122;45382:6;45378:15;45367:9;45360:34;45430:6;45425:2;45414:9;45410:18;45403:34;45473:2;45468;45457:9;45453:18;45446:30;45499:44;45539:2;45528:9;45524:18;45516:6;45499:44;:::i;:::-;45485:58;;45552:53;45601:2;45590:9;45586:18;45578:6;45552:53;:::i;:::-;45642:6;45636:3;45625:9;45621:19;45614:35;45686:6;45680:3;45669:9;45665:19;45658:35;45730:6;45724:3;45713:9;45709:19;45702:35;45786:2;45778:6;45774:15;45768:3;45757:9;45753:19;45746:44;45839:2;45831:6;45827:15;45821:3;45810:9;45806:19;45799:44;;45892:9;45884:6;45880:22;45874:3;45863:9;45859:19;45852:51;45920:32;45945:6;45937;45920:32;:::i;:::-;45912:40;44825:1133;-1:-1:-1;;;;;;;;;;;;;44825:1133:122:o;45963:386::-;46196:2;46185:9;46178:21;46159:4;46216:68;46280:2;46269:9;46265:18;46257:6;46216:68;:::i;:::-;46208:76;;46334:6;46327:14;46320:22;46315:2;46304:9;46300:18;46293:50;45963:386;;;;;:::o;46794:395::-;46880:6;46888;46896;46949:2;46937:9;46928:7;46924:23;46920:32;46917:52;;;46965:1;46962;46955:12;46917:52;46997:9;46991:16;47047:4;47040:5;47036:16;47029:5;47026:27;47016:55;;47067:1;47064;47057:12;47016:55;47135:2;47120:18;;47114:25;47179:2;47164:18;;;47158:25;47090:5;;47114:25;;-1:-1:-1;47158:25:122;46794:395;-1:-1:-1;;;46794:395:122:o;47963:691::-;48293:3;48282:9;48275:22;48256:4;48320:69;48384:3;48373:9;48369:19;48361:6;48320:69;:::i;:::-;-1:-1:-1;;;;;48429:6:122;48425:55;48420:2;48409:9;48405:18;48398:83;48529:9;48521:6;48517:22;48512:2;48501:9;48497:18;48490:50;48557:32;48582:6;48574;48557:32;:::i;:::-;48549:40;;;48639:6;48632:14;48625:22;48620:2;48609:9;48605:18;48598:50;47963:691;;;;;;;:::o;49090:290::-;49267:2;49256:9;49249:21;49230:4;49287:44;49327:2;49316:9;49312:18;49304:6;49287:44;:::i;:::-;49279:52;;49367:6;49362:2;49351:9;49347:18;49340:34;49090:290;;;;;:::o;50615:339::-;-1:-1:-1;;;;;50796:6:122;50792:55;50781:9;50774:74;50884:2;50879;50868:9;50864:18;50857:30;50755:4;50904:44;50944:2;50933:9;50929:18;50921:6;50904:44;:::i;50959:1051::-;51376:4;51405:3;51435:2;51424:9;51417:21;51461:56;51513:2;51502:9;51498:18;51490:6;51461:56;:::i;:::-;51548:2;51533:18;;;51526:34;;;;-1:-1:-1;;;;;51657:15:122;;;51652:2;51637:18;;51630:43;51709:22;;;51704:2;51689:18;;51682:50;-1:-1:-1;51741:17:122;;51827:15;;;51821:3;51806:19;;51799:44;-1:-1:-1;;51880:15:122;;;51874:3;51859:19;;51852:44;51945:4;51933:17;;;;51927:3;51912:19;;51905:46;51988:15;;;51982:3;51967:19;;;51960:44;;;;51775:15;;50959:1051;-1:-1:-1;50959:1051:122:o;52015:408::-;-1:-1:-1;;;;;52222:6:122;52218:55;52207:9;52200:74;52310:2;52305;52294:9;52290:18;52283:30;52181:4;52330:44;52370:2;52359:9;52355:18;52347:6;52330:44;:::i;:::-;52322:52;;52410:6;52405:2;52394:9;52390:18;52383:34;52015:408;;;;;;:::o;53114:439::-;53364:2;53353:9;53346:21;53327:4;53390:49;53435:2;53424:9;53420:18;39649:2;39637:15;;39684:12;39677:4;39668:14;;39661:36;39722:2;39713:12;;39572:159;53390:49;53487:9;53479:6;53475:22;53470:2;53459:9;53455:18;53448:50;53515:32;53540:6;53532;53515:32;:::i;53558:439::-;53808:2;53797:9;53790:21;53771:4;53834:49;53879:2;53868:9;53864:18;40166:2;40154:15;;40201:12;40194:4;40185:14;;40178:36;40239:2;40230:12;;40089:159;54002:610;54248:13;;54191:3;;54222;;54301:4;54328:15;;;54191:3;54371:175;54385:6;54382:1;54379:13;54371:175;;;54448:13;;54434:28;;54484:14;;;;54521:15;;;;54407:1;54400:9;54371:175;;;-1:-1:-1;;54555:21:122;;;-1:-1:-1;54592:14:122;;;;;-1:-1:-1;;;54002:610:122:o;55178:659::-;55243:5;55296:3;55289:4;55281:6;55277:17;55273:27;55263:55;;55314:1;55311;55304:12;55263:55;55343:6;55337:13;55369:4;55393:60;55409:43;55449:2;55409:43;:::i;55393:60::-;55487:15;;;55573:1;55569:10;;;;55557:23;;55553:32;;;55518:12;;;;55597:15;;;55594:35;;;55625:1;55622;55615:12;55594:35;55661:2;55653:6;55649:15;55673:135;55689:6;55684:3;55681:15;55673:135;;;55755:10;;55743:23;;55786:12;;;;55706;;55673:135;;55842:614;55971:6;55979;56032:2;56020:9;56011:7;56007:23;56003:32;56000:52;;;56048:1;56045;56038:12;56000:52;56081:9;56075:16;56110:18;56151:2;56143:6;56140:14;56137:34;;;56167:1;56164;56157:12;56137:34;56190:72;56254:7;56245:6;56234:9;56230:22;56190:72;:::i;:::-;56180:82;;56308:2;56297:9;56293:18;56287:25;56271:41;;56337:2;56327:8;56324:16;56321:36;;;56353:1;56350;56343:12;56321:36;;56376:74;56442:7;56431:8;56420:9;56416:24;56376:74;:::i;:::-;56366:84;;;55842:614;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","eHandler()":"9fbcc9ad","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","factory()":"c45a0155","failed()":"ba414fa6","getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","handler()":"c80916d4","hashLeafPairs(bytes32,bytes32)":"dd1d2599","leaves(bytes32)":"151bcd2c","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","multisend()":"294402cc","orderFills(bytes32)":"f7213db6","relayer()":"8406c079","safe1()":"ad9b0475","safe2()":"7d499aa4","safe3()":"0c8548f5","setUp()":"0a9254e4","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_SetUpState_ComposableCoWDomainSeparator_is_set()":"329696ac","test_SetUpState_ComposableCoWDomainVerifier_is_set()":"b716db66","test_TWAPOrderMathLib_calculateValidTo(uint256,uint256,uint256,uint256,uint256)":"e4d3ab99","test_getTradeableOrder_FuzzRevertIfBeforeStart(uint256,uint256)":"5ab3c27d","test_getTradeableOrder_FuzzRevertIfExpired(uint256,uint256)":"c3fe505c","test_getTradeableOrder_FuzzRevertIfOrderAfterBlocktimestampValidity(uint256,uint256)":"b3d79d0c","test_getTradeableOrder_FuzzRevertIfOrderBeforeBlockTimestamp(uint256,uint256)":"e2052305","test_getTradeableOrder_FuzzRevertIfOutsideSpan(uint256,uint256)":"16805336","test_getTradeableOrder_FuzzRevertOnInvalidFrequency(uint256)":"9c020399","test_getTradeableOrder_FuzzRevertOnInvalidNumParts(uint256)":"ff6fd6dd","test_getTradeableOrder_FuzzRevertOnInvalidSpan(uint256,uint256)":"27f72eb3","test_getTradeableOrder_FuzzRevertOnInvalidStartTime(uint256)":"b081cb18","test_getTradeableOrder_RevertOnSameTokens()":"cd36c914","test_getTradeableOrder_RevertOnTokenZero()":"48c72e29","test_getTradeableOrder_RevertOnZeroMinPartLimit()":"19f98a58","test_getTradeableOrder_RevertOnZeroPartSellAmount()":"c522bb6e","test_getTradeableOrder_e2e_fuzz(uint256,uint256)":"ab5b0842","test_getTradeableOrder_e2e_fuzz_WithContext(uint32,uint256)":"50bcf4ca","test_settle_e2e()":"0ef28fec","test_simulate_fuzz(uint32,uint32,uint32)":"c50985fb","test_verify_e2e_fuzz(uint256,uint256)":"bbba1721","token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e","vault()":"fbfa77cf","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"OrderNotValid\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IConditionalOrder.ConditionalOrderParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"ConditionalOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"location\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct ComposableCoW.Proof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"MerkleRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISwapGuard\",\"name\":\"swapGuard\",\"type\":\"address\"}],\"name\":\"SwapGuardSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"leaves\",\"outputs\":[{\"internalType\":\"contract IConditionalOrder\",\"name\":\"handler\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"staticInput\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"orderFills\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe1\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe2\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safe3\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainSeparator_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetUpState_ComposableCoWDomainVerifier_is_set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numParts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"frequency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"span\",\"type\":\"uint256\"}],\"name\":\"test_TWAPOrderMathLib_calculateValidTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertIfBeforeStart\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertIfExpired\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ctxBlockTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertIfOrderAfterBlocktimestampValidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ctxBlockTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertIfOrderBeforeBlockTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertIfOutsideSpan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"frequency\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertOnInvalidFrequency\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numParts\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertOnInvalidNumParts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"frequency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"span\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertOnInvalidSpan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_FuzzRevertOnInvalidStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getTradeableOrder_RevertOnSameTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getTradeableOrder_RevertOnTokenZero\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getTradeableOrder_RevertOnZeroMinPartLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_getTradeableOrder_RevertOnZeroPartSellAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_e2e_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_getTradeableOrder_e2e_fuzz_WithContext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_settle_e2e\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"numParts\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"frequency\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"span\",\"type\":\"uint32\"}],\"name\":\"test_simulate_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTime\",\"type\":\"uint256\"}],\"name\":\"test_verify_e2e_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OrderNotValid(string)\":[{\"details\":\"This error is returned by the `getTradeableOrder` function if the order condition is not met. A parameter of `string` type is included to allow the caller to specify the reason for the failure.\"}]},\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"},\"setUp()\":{\"details\":\"Sets up the CoW Protocol test environment.\"},\"test_SetUpState_ComposableCoWDomainSeparator_is_set()\":{\"details\":\"Ensure `ComposableCoW` and `Settlement` have the same domain separator\"},\"test_SetUpState_ComposableCoWDomainVerifier_is_set()\":{\"details\":\"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain\"},\"test_TWAPOrderMathLib_calculateValidTo(uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"Fuzz test `calculateValidTo` function\",\"params\":{\"currentTime\":\"The current time\",\"frequency\":\"The frequency of the TWAP order\",\"numParts\":\"The number of parts in the TWAP order\",\"span\":\"The span of the TWAP order\",\"startTime\":\"The start time of the TWAP order\"}},\"test_getTradeableOrder_FuzzRevertIfBeforeStart(uint256,uint256)\":{\"details\":\"Fuzz test to make sure that the order reverts if the current time is before the start time\"},\"test_getTradeableOrder_FuzzRevertIfExpired(uint256,uint256)\":{\"details\":\"Fuzz test that the order reverts if the current time is after the expiry\"},\"test_getTradeableOrder_FuzzRevertIfOutsideSpan(uint256,uint256)\":{\"details\":\"Fuzz test that the order reverts if the current time is outside of the span\"},\"test_getTradeableOrder_FuzzRevertOnInvalidFrequency(uint256)\":{\"details\":\"Fuzz test revert on invalid frequency\"},\"test_getTradeableOrder_FuzzRevertOnInvalidNumParts(uint256)\":{\"details\":\"Fuzz test revert on invalid numParts\"},\"test_getTradeableOrder_FuzzRevertOnInvalidSpan(uint256,uint256)\":{\"details\":\"Fuzz test revert on invalid span\"},\"test_getTradeableOrder_FuzzRevertOnInvalidStartTime(uint256)\":{\"details\":\"Fuzz test revert on invalid start time\"},\"test_getTradeableOrder_RevertOnSameTokens()\":{\"details\":\"Revert when the sell token and buy token are the same\"},\"test_getTradeableOrder_RevertOnTokenZero()\":{\"details\":\"Revert when either the buy or sell token is address(0)\"},\"test_getTradeableOrder_RevertOnZeroMinPartLimit()\":{\"details\":\"Revert when the min part limit is 0\"},\"test_getTradeableOrder_RevertOnZeroPartSellAmount()\":{\"details\":\"Revert when the sell amount is 0\"},\"test_getTradeableOrder_e2e_fuzz(uint256,uint256)\":{\"details\":\"Fuzz test an order that is valid and should not revert from e2e\"},\"test_settle_e2e()\":{\"details\":\"Test the entire flow of a TWAP order from `ComposableCoW`'s perspective\"},\"test_simulate_fuzz(uint32,uint32,uint32)\":{\"details\":\"This is a very expensive test as it iterates over every second for the duration of the TWAP order.\",\"params\":{\"frequency\":\"The frequency of the TWAP order\",\"numParts\":\"The number of parts in the TWAP order\",\"span\":\"The span of the TWAP order\"}},\"test_verify_e2e_fuzz(uint256,uint256)\":{\"details\":\"Test that the order is valid when the current time is within range\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"},\"test_simulate_fuzz(uint32,uint32,uint32)\":{\"notice\":\"A full e2e test from order creation to settlement.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ComposableCoW.twap.t.sol\":\"ComposableCoWTwapTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/guards/BaseSwapGuard.sol\":{\"keccak256\":\"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d\",\"dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN\"]},\"src/guards/ReceiverLock.sol\":{\"keccak256\":\"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828\",\"dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/value_factories/CurrentBlockTimestampFactory.sol\":{\"keccak256\":\"0x923cafbf1a55044632cb9a289e2df3d74b461808d15ab1e8e0775e9829d8473a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5e70fdf0a54f4cc29ca974301d7a4dc4c289a197084268a6767981160a0d6595\",\"dweb:/ipfs/Qmf9JWipmNgRsXrcUBBBe1AZPCKD7tW72gmLedDpmNdUs6\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/Base.t.sol\":{\"keccak256\":\"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7\",\"dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX\"]},\"test/ComposableCoW.base.t.sol\":{\"keccak256\":\"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32\",\"dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu\"]},\"test/ComposableCoW.twap.t.sol\":{\"keccak256\":\"0x9aec4417d09c47f8ace85ad05e0a8b82c52558423392230a08a681ee8d7315e1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://36eda6a535c1402aab43d1691950593bdcf6489d19695ef5e649aff5ac18cfe2\",\"dweb:/ipfs/QmXFMB8FsQV3rjma3TyHMZ5MGP9BNb6DKjDBogPbuiACGe\"]},\"test/helpers/CoWProtocol.t.sol\":{\"keccak256\":\"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856\",\"dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string"}],"type":"error","name":"OrderNotValid"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"struct IConditionalOrder.ConditionalOrderParams","name":"params","type":"tuple","components":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}],"indexed":false}],"type":"event","name":"ConditionalOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"struct ComposableCoW.Proof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"location","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false}],"type":"event","name":"MerkleRootSet","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract ISwapGuard","name":"swapGuard","type":"address","indexed":false}],"type":"event","name":"SwapGuardSet","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"leaves","outputs":[{"internalType":"contract IConditionalOrder","name":"handler","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"staticInput","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orderFills","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe1","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe2","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"safe3","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainSeparator_is_set"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetUpState_ComposableCoWDomainVerifier_is_set"},{"inputs":[{"internalType":"uint256","name":"currentTime","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"numParts","type":"uint256"},{"internalType":"uint256","name":"frequency","type":"uint256"},{"internalType":"uint256","name":"span","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_TWAPOrderMathLib_calculateValidTo"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertIfBeforeStart"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertIfExpired"},{"inputs":[{"internalType":"uint256","name":"ctxBlockTimestamp","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertIfOrderAfterBlocktimestampValidity"},{"inputs":[{"internalType":"uint256","name":"ctxBlockTimestamp","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertIfOrderBeforeBlockTimestamp"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertIfOutsideSpan"},{"inputs":[{"internalType":"uint256","name":"frequency","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidFrequency"},{"inputs":[{"internalType":"uint256","name":"numParts","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidNumParts"},{"inputs":[{"internalType":"uint256","name":"frequency","type":"uint256"},{"internalType":"uint256","name":"span","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidSpan"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_FuzzRevertOnInvalidStartTime"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_RevertOnSameTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_RevertOnTokenZero"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_RevertOnZeroMinPartLimit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_RevertOnZeroPartSellAmount"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_e2e_fuzz"},{"inputs":[{"internalType":"uint32","name":"_blockTimestamp","type":"uint32"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_getTradeableOrder_e2e_fuzz_WithContext"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_settle_e2e"},{"inputs":[{"internalType":"uint32","name":"numParts","type":"uint32"},{"internalType":"uint32","name":"frequency","type":"uint32"},{"internalType":"uint32","name":"span","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"test_simulate_fuzz"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"currentTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_verify_e2e_fuzz"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"},"setUp()":{"details":"Sets up the CoW Protocol test environment."},"test_SetUpState_ComposableCoWDomainSeparator_is_set()":{"details":"Ensure `ComposableCoW` and `Settlement` have the same domain separator"},"test_SetUpState_ComposableCoWDomainVerifier_is_set()":{"details":"Ensure `ComposableCoW` contract is the `ISafeSignatureVerifier` for `safe1` on the `settlement` domain"},"test_TWAPOrderMathLib_calculateValidTo(uint256,uint256,uint256,uint256,uint256)":{"details":"Fuzz test `calculateValidTo` function","params":{"currentTime":"The current time","frequency":"The frequency of the TWAP order","numParts":"The number of parts in the TWAP order","span":"The span of the TWAP order","startTime":"The start time of the TWAP order"}},"test_getTradeableOrder_FuzzRevertIfBeforeStart(uint256,uint256)":{"details":"Fuzz test to make sure that the order reverts if the current time is before the start time"},"test_getTradeableOrder_FuzzRevertIfExpired(uint256,uint256)":{"details":"Fuzz test that the order reverts if the current time is after the expiry"},"test_getTradeableOrder_FuzzRevertIfOutsideSpan(uint256,uint256)":{"details":"Fuzz test that the order reverts if the current time is outside of the span"},"test_getTradeableOrder_FuzzRevertOnInvalidFrequency(uint256)":{"details":"Fuzz test revert on invalid frequency"},"test_getTradeableOrder_FuzzRevertOnInvalidNumParts(uint256)":{"details":"Fuzz test revert on invalid numParts"},"test_getTradeableOrder_FuzzRevertOnInvalidSpan(uint256,uint256)":{"details":"Fuzz test revert on invalid span"},"test_getTradeableOrder_FuzzRevertOnInvalidStartTime(uint256)":{"details":"Fuzz test revert on invalid start time"},"test_getTradeableOrder_RevertOnSameTokens()":{"details":"Revert when the sell token and buy token are the same"},"test_getTradeableOrder_RevertOnTokenZero()":{"details":"Revert when either the buy or sell token is address(0)"},"test_getTradeableOrder_RevertOnZeroMinPartLimit()":{"details":"Revert when the min part limit is 0"},"test_getTradeableOrder_RevertOnZeroPartSellAmount()":{"details":"Revert when the sell amount is 0"},"test_getTradeableOrder_e2e_fuzz(uint256,uint256)":{"details":"Fuzz test an order that is valid and should not revert from e2e"},"test_settle_e2e()":{"details":"Test the entire flow of a TWAP order from `ComposableCoW`'s perspective"},"test_simulate_fuzz(uint32,uint32,uint32)":{"details":"This is a very expensive test as it iterates over every second for the duration of the TWAP order.","params":{"frequency":"The frequency of the TWAP order","numParts":"The number of parts in the TWAP order","span":"The span of the TWAP order"}},"test_verify_e2e_fuzz(uint256,uint256)":{"details":"Test that the order is valid when the current time is within range"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"},"test_simulate_fuzz(uint32,uint32,uint32)":{"notice":"A full e2e test from order creation to settlement."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ComposableCoW.twap.t.sol":"ComposableCoWTwapTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/guards/BaseSwapGuard.sol":{"keccak256":"0x2f9760e41baa023e2474b665e7ec3146f26d3e19dad06c5270c153b847b9eade","urls":["bzz-raw://b5deb4b7ef657384325fcdb1f32d9ea6a0b037e2720d48035f244bfce44a3e6d","dweb:/ipfs/QmUMpX2tL329EFEdzoBY9EDbexqXtJ4LhJef5EjGpcppvN"],"license":"GPL-3.0"},"src/guards/ReceiverLock.sol":{"keccak256":"0xe98f0af2a0a86cccc272cecec8cc7d67317a5ad35e4a82118371c40a0c788cd8","urls":["bzz-raw://ec45f50cfba831855ac72eff11494732ee6d400234d21b82b4a791369370c828","dweb:/ipfs/Qmby5HowoKQnLkDDFJE44Pk2pC8myVSn3ynuST75DGoWYA"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/value_factories/CurrentBlockTimestampFactory.sol":{"keccak256":"0x923cafbf1a55044632cb9a289e2df3d74b461808d15ab1e8e0775e9829d8473a","urls":["bzz-raw://5e70fdf0a54f4cc29ca974301d7a4dc4c289a197084268a6767981160a0d6595","dweb:/ipfs/Qmf9JWipmNgRsXrcUBBBe1AZPCKD7tW72gmLedDpmNdUs6"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/Base.t.sol":{"keccak256":"0x5635a135684693a9f96d7728518daa117d7a6803b7786abac0622c7746efcabe","urls":["bzz-raw://b8f883bb8a8935b1b6aace8b4af3b19b5a8602197f8bad5cf8382829a27b5bc7","dweb:/ipfs/QmVHoG5wetEWze2L42wDeK9eWs4LNCqiH7RRKGRiBAb5fX"],"license":"GPL-3.0"},"test/ComposableCoW.base.t.sol":{"keccak256":"0x14b249bdbb5ea3c29ea4dfe2fb520e3004db9691bfd06328e38fd4edc6db8b2f","urls":["bzz-raw://305acee70482cf8b05ecd03277a5d49513e0e2a8614188c25dad6d76634ada32","dweb:/ipfs/QmaKtbXqxPSpvLSmbgcrFgwFY7qmmNUK6bSwmBteCZLShu"],"license":"GPL-3.0"},"test/ComposableCoW.twap.t.sol":{"keccak256":"0x9aec4417d09c47f8ace85ad05e0a8b82c52558423392230a08a681ee8d7315e1","urls":["bzz-raw://36eda6a535c1402aab43d1691950593bdcf6489d19695ef5e649aff5ac18cfe2","dweb:/ipfs/QmXFMB8FsQV3rjma3TyHMZ5MGP9BNb6DKjDBogPbuiACGe"],"license":"GPL-3.0"},"test/helpers/CoWProtocol.t.sol":{"keccak256":"0x446f3e0815be8dbf9573873d3a95a8077f372b6ea72117456e31ffb6d3cff1ae","urls":["bzz-raw://f9ad7f362dc5dc1746e310d7994b030efc8082e7ae178aa6a8407a355a53e856","dweb:/ipfs/QmeYy4zVh2QVUWS5196kxpuQBSVuwauygT5Uz5RmbfEvqD"],"license":"GPL-3.0"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":114} \ No newline at end of file diff --git a/out/ComposableCoWLib.t.sol/ComposableCoWLib.json b/out/ComposableCoWLib.t.sol/ComposableCoWLib.json new file mode 100644 index 0000000..c3ee16f --- /dev/null +++ b/out/ComposableCoWLib.t.sol/ComposableCoWLib.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220be1d2cf5784316fe303c9c516152b1660d812b2954d9662dee84fe1ed1a98f9e64736f6c63430008130033","sourceMap":"189:2540:120:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;189:2540:120;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220be1d2cf5784316fe303c9c516152b1660d812b2954d9662dee84fe1ed1a98f9e64736f6c63430008130033","sourceMap":"189:2540:120:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/ComposableCoWLib.t.sol\":\"ComposableCoWLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"test/libraries/ComposableCoWLib.t.sol\":{\"keccak256\":\"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85\",\"dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/ComposableCoWLib.t.sol":"ComposableCoWLib"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"test/libraries/ComposableCoWLib.t.sol":{"keccak256":"0xb2181249ce7534d28d53b75f2a8a3740c6483c0a724c6fc50c57a6fe6cf0a909","urls":["bzz-raw://8375f3182ed1f694adac87bfded1a139069e3d94c5c2d3a2185f0e18ff6fdd85","dweb:/ipfs/QmaucPxncoTpjwHF13yXc1D2p1abuoctww1syqkVxVS9uq"],"license":"GPL-3.0"}},"version":1},"id":120} \ No newline at end of file diff --git a/out/ConditionalOrdersUtilsLib.sol/ConditionalOrdersUtilsLib.json b/out/ConditionalOrdersUtilsLib.sol/ConditionalOrdersUtilsLib.json new file mode 100644 index 0000000..5206e6a --- /dev/null +++ b/out/ConditionalOrdersUtilsLib.sol/ConditionalOrdersUtilsLib.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122021a38de2fb572380dfdc839b6fd7ff105ed7dc8adbb7b530decacaab71feb8b164736f6c63430008130033","sourceMap":"204:1175:97:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;204:1175:97;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122021a38de2fb572380dfdc839b6fd7ff105ed7dc8adbb7b530decacaab71feb8b164736f6c63430008130033","sourceMap":"204:1175:97:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{},\"title\":\"ConditionalOrdersUtilsLib - Utility functions for standardising conditional orders.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/types/ConditionalOrdersUtilsLib.sol\":\"ConditionalOrdersUtilsLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/types/ConditionalOrdersUtilsLib.sol":"ConditionalOrdersUtilsLib"},"evmVersion":"paris","libraries":{}},"sources":{"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"}},"version":1},"id":97} \ No newline at end of file diff --git a/out/Context.sol/Context.json b/out/Context.sol/Context.json new file mode 100644 index 0000000..ba15030 --- /dev/null +++ b/out/Context.sol/Context.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/@openzeppelin/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"}},"version":1},"id":4} \ No newline at end of file diff --git a/out/ERC1155TokenReceiver.sol/ERC1155TokenReceiver.json b/out/ERC1155TokenReceiver.sol/ERC1155TokenReceiver.json new file mode 100644 index 0000000..e7f626d --- /dev/null +++ b/out/ERC1155TokenReceiver.sol/ERC1155TokenReceiver.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_ids","type":"uint256[]","internalType":"uint256[]"},{"name":"_values","type":"uint256[]","internalType":"uint256[]"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_value","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated. This function MUST return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81) if it accepts the transfer(s). This function MUST revert if it rejects the transfer(s). Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\",\"params\":{\"_data\":\"Additional data with no specified format.\",\"_from\":\"The address which previously owned the token.\",\"_ids\":\"An array containing ids of each token being transferred (order and length must match _values array).\",\"_operator\":\"The address which initiated the batch transfer (i.e. msg.sender).\",\"_values\":\"An array containing amounts of each token being transferred (order and length must match _ids array).\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`.\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated. This function MUST return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61) if it accepts the transfer. This function MUST revert if it rejects the transfer. Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.\",\"params\":{\"_data\":\"Additional data with no specified format.\",\"_from\":\"The address which previously owned the token.\",\"_id\":\"The ID of the token being transferred.\",\"_operator\":\"The address which initiated the transfer (i.e. msg.sender).\",\"_value\":\"The amount of tokens being transferred.\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Handle the receipt of multiple ERC1155 token types.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Handle the receipt of a single ERC1155 token type.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":\"ERC1155TokenReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated. This function MUST return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81) if it accepts the transfer(s). This function MUST revert if it rejects the transfer(s). Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.","params":{"_data":"Additional data with no specified format.","_from":"The address which previously owned the token.","_ids":"An array containing ids of each token being transferred (order and length must match _values array).","_operator":"The address which initiated the batch transfer (i.e. msg.sender).","_values":"An array containing amounts of each token being transferred (order and length must match _ids array)."},"returns":{"_0":"`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`."}},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated. This function MUST return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61) if it accepts the transfer. This function MUST revert if it rejects the transfer. Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.","params":{"_data":"Additional data with no specified format.","_from":"The address which previously owned the token.","_id":"The ID of the token being transferred.","_operator":"The address which initiated the transfer (i.e. msg.sender).","_value":"The amount of tokens being transferred."},"returns":{"_0":"`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`."}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"notice":"Handle the receipt of multiple ERC1155 token types."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"notice":"Handle the receipt of a single ERC1155 token type."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":"ERC1155TokenReceiver"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"}},"version":1},"id":70} \ No newline at end of file diff --git a/out/ERC1271Forwarder.sol/ERC1271Forwarder.json b/out/ERC1271Forwarder.sol/ERC1271Forwarder.json new file mode 100644 index 0000000..3a5f363 --- /dev/null +++ b/out/ERC1271Forwarder.sol/ERC1271Forwarder.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"composableCoW","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ComposableCoW"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"error","name":"InvalidHash","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"composableCoW()":"8b0f4834","isValidSignature(bytes32,bytes)":"1626ba7e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"composableCoW\",\"outputs\":[{\"internalType\":\"contract ComposableCoW\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"details\":\"Designed to be extended from by a contract that wants to use ComposableCoW\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"GPv2Order.Data digest\",\"signature\":\"The abi.encoded tuple of (GPv2Order.Data, ComposableCoW.PayloadStruct)\"}}},\"title\":\"ERC1271 Forwarder - An abstract contract that implements ERC1271 forwarding to ComposableCoW\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Re-arrange the request into something that ComposableCoW can understand\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC1271Forwarder.sol\":\"ERC1271Forwarder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/ERC1271Forwarder.sol\":{\"keccak256\":\"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084\",\"dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"composableCoW","outputs":[{"internalType":"contract ComposableCoW","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"isValidSignature(bytes32,bytes)":{"params":{"_hash":"GPv2Order.Data digest","signature":"The abi.encoded tuple of (GPv2Order.Data, ComposableCoW.PayloadStruct)"}}},"version":1},"userdoc":{"kind":"user","methods":{"isValidSignature(bytes32,bytes)":{"notice":"Re-arrange the request into something that ComposableCoW can understand"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ERC1271Forwarder.sol":"ERC1271Forwarder"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/ERC1271Forwarder.sol":{"keccak256":"0xbb30e46f3a9117d1f7a5c7b6be6990ab1c86e4559a31962d3ccbe24de24bebb8","urls":["bzz-raw://13dac01ed812c264ac05ec6c302272cac754849550f587bdeeaf176ea5065084","dweb:/ipfs/QmQaBWfMtXFyVE18o2UPeYqMG9PjWQ1a7odqzhuFRc8CzY"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/ERC165Handler.sol/ERC165Handler.json b/out/ERC165Handler.sol/ERC165Handler.json new file mode 100644 index 0000000..54e3b63 --- /dev/null +++ b/out/ERC165Handler.sol/ERC165Handler.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addSupportedInterfaceBatch","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"},{"name":"handlerWithSelectors","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSupportedInterfaceBatch","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeInterfaces","inputs":[{"name":"","type":"address","internalType":"contract Safe"},{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"safeMethods","inputs":[{"name":"","type":"address","internalType":"contract Safe"},{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setSupportedInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"},{"name":"supported","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"AddedInterface","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"interfaceId","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"AddedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"method","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ChangedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"oldMethod","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newMethod","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemovedInterface","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"interfaceId","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"RemovedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addSupportedInterfaceBatch(bytes4,bytes32[])":"327b533c","removeSupportedInterfaceBatch(bytes4,bytes4[])":"61f5401b","safeInterfaces(address,bytes4)":"b435a13b","safeMethods(address,bytes4)":"0a3fe054","setSupportedInterface(bytes4,bool)":"7f73528b","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"AddedInterface\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"method\",\"type\":\"bytes32\"}],\"name\":\"AddedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldMethod\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newMethod\",\"type\":\"bytes32\"}],\"name\":\"ChangedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"RemovedInterface\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"RemovedSafeMethod\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes32[]\",\"name\":\"handlerWithSelectors\",\"type\":\"bytes32[]\"}],\"name\":\"addSupportedInterfaceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"removeSupportedInterfaceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"safeInterfaces\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"safeMethods\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"supported\",\"type\":\"bool\"}],\"name\":\"setSupportedInterface\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addSupportedInterfaceBatch(bytes4,bytes32[])\":{\"params\":{\"_interfaceId\":\"The interface id to set\",\"handlerWithSelectors\":\"The handlers encoded with the 4-byte selectors of the methods\"}},\"removeSupportedInterfaceBatch(bytes4,bytes4[])\":{\"params\":{\"_interfaceId\":\"the interface id to remove\",\"selectors\":\"The selectors of the methods to remove\"}},\"setSupportedInterface(bytes4,bool)\":{\"params\":{\"interfaceId\":\"The interface id whose support is to be set\",\"supported\":\"True if the interface is supported, false otherwise\"}},\"supportsInterface(bytes4)\":{\"details\":\"Inheriting contracts should override `_supportsInterface` to add support for additional interfaces\",\"params\":{\"interfaceId\":\"The ERC165 interface id to check\"},\"returns\":{\"_0\":\"True if the interface is supported\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addSupportedInterfaceBatch(bytes4,bytes32[])\":{\"notice\":\"Batch add selectors for an interface.\"},\"removeSupportedInterfaceBatch(bytes4,bytes4[])\":{\"notice\":\"Batch remove selectors for an interface.\"},\"setSupportedInterface(bytes4,bool)\":{\"notice\":\"Setter to indicate if an interface is supported (and thus reported by ERC165 supportsInterface)\"},\"supportsInterface(bytes4)\":{\"notice\":\"Implements ERC165 interface detection for the supported interfaces\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":\"ERC165Handler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"interfaceId","type":"bytes4","indexed":false}],"type":"event","name":"AddedInterface","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"method","type":"bytes32","indexed":false}],"type":"event","name":"AddedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"oldMethod","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newMethod","type":"bytes32","indexed":false}],"type":"event","name":"ChangedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"interfaceId","type":"bytes4","indexed":false}],"type":"event","name":"RemovedInterface","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false}],"type":"event","name":"RemovedSafeMethod","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes32[]","name":"handlerWithSelectors","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"addSupportedInterfaceBatch"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"removeSupportedInterfaceBatch"},{"inputs":[{"internalType":"contract Safe","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function","name":"safeInterfaces","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract Safe","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function","name":"safeMethods","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"bool","name":"supported","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setSupportedInterface"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"addSupportedInterfaceBatch(bytes4,bytes32[])":{"params":{"_interfaceId":"The interface id to set","handlerWithSelectors":"The handlers encoded with the 4-byte selectors of the methods"}},"removeSupportedInterfaceBatch(bytes4,bytes4[])":{"params":{"_interfaceId":"the interface id to remove","selectors":"The selectors of the methods to remove"}},"setSupportedInterface(bytes4,bool)":{"params":{"interfaceId":"The interface id whose support is to be set","supported":"True if the interface is supported, false otherwise"}},"supportsInterface(bytes4)":{"details":"Inheriting contracts should override `_supportsInterface` to add support for additional interfaces","params":{"interfaceId":"The ERC165 interface id to check"},"returns":{"_0":"True if the interface is supported"}}},"version":1},"userdoc":{"kind":"user","methods":{"addSupportedInterfaceBatch(bytes4,bytes32[])":{"notice":"Batch add selectors for an interface."},"removeSupportedInterfaceBatch(bytes4,bytes4[])":{"notice":"Batch remove selectors for an interface."},"setSupportedInterface(bytes4,bool)":{"notice":"Setter to indicate if an interface is supported (and thus reported by ERC165 supportsInterface)"},"supportsInterface(bytes4)":{"notice":"Implements ERC165 interface detection for the supported interfaces"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/ERC165Handler.sol":"ERC165Handler"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":64} \ No newline at end of file diff --git a/out/ERC165Handler.sol/IERC165Handler.json b/out/ERC165Handler.sol/IERC165Handler.json new file mode 100644 index 0000000..a922376 --- /dev/null +++ b/out/ERC165Handler.sol/IERC165Handler.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addSupportedInterfaceBatch","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"},{"name":"handlerWithSelectors","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSupportedInterfaceBatch","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeInterfaces","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setSupportedInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"},{"name":"supported","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addSupportedInterfaceBatch(bytes4,bytes32[])":"327b533c","removeSupportedInterfaceBatch(bytes4,bytes4[])":"61f5401b","safeInterfaces(address,bytes4)":"b435a13b","setSupportedInterface(bytes4,bool)":"7f73528b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes32[]\",\"name\":\"handlerWithSelectors\",\"type\":\"bytes32[]\"}],\"name\":\"addSupportedInterfaceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"removeSupportedInterfaceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"safeInterfaces\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"supported\",\"type\":\"bool\"}],\"name\":\"setSupportedInterface\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":\"IERC165Handler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"bytes32[]","name":"handlerWithSelectors","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"addSupportedInterfaceBatch"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"removeSupportedInterfaceBatch"},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"safeInterfaces","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"bool","name":"supported","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setSupportedInterface"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/ERC165Handler.sol":"IERC165Handler"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":64} \ No newline at end of file diff --git a/out/ERC20.sol/ERC20.json b/out/ERC20.sol/ERC20.json new file mode 100644 index 0000000..d812bed --- /dev/null +++ b/out/ERC20.sol/ERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162000e0f38038062000e0f83398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f2f7f64d227d5e5638b66ce4dd0dde18df9274d4ea95b8290c7ae3039a89a30464736f6c63430008130033","sourceMap":"1532:11312:1:-:0;;;1980:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2046:5;:13;2054:5;2046;:13;:::i;:::-;-1:-1:-1;2069:7:1;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;1532:11312;;14:127:124;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:124;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:124;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:124:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:124;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:124;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:124;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:124;;;3992:26;3943:89;-1:-1:-1;;2747:1:124;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:124;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:124;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:124;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:124:o;:::-;1532:11312:1;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f2f7f64d227d5e5638b66ce4dd0dde18df9274d4ea95b8290c7ae3039a89a30464736f6c63430008130033","sourceMap":"1532:11312:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:124;;1244:22;1226:41;;1214:2;1199:18;4444:197:1;1086:187:124;3255:106:1;3342:12;;3255:106;;;1424:25:124;;;1412:2;1397:18;3255:106:1;1278:177:124;5203:256:1;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1935:36:124;;1923:2;1908:18;3104:91:1;1793:184:124;5854:234:1;;;;;;:::i;:::-;;:::i;3419:125::-;;;;;;:::i;:::-;3519:18;;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;4102:18;;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149;2158:98;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:4;4581:32:1;719:10:4;4597:7:1;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:4;5356:38:1;5372:4;719:10:4;5387:6:1;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:1;;5203:256;-1:-1:-1;;;;5203:256:1:o;5854:234::-;719:10:4;5942:4:1;4102:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5942:4;;719:10:4;5996:64:1;;719:10:4;;4102:27:1;;6021:38;;6049:10;;6021:38;:::i;:::-;5996:8;:64::i;2369:102::-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;719:10:4;6668:4:1;4102:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6668:4;;719:10:4;6812:15:1;6792:16;:35;;6784:85;;;;;;;3366:2:124;6784:85:1;;;3348:21:124;3405:2;3385:18;;;3378:30;3444:34;3424:18;;;3417:62;3515:7;3495:18;;;3488:35;3540:19;;6784:85:1;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:4;3873:28:1;719:10:4;3890:2:1;3894:6;3873:9;:28::i;10457:340::-;10558:19;;;10550:68;;;;;;;3772:2:124;10550:68:1;;;3754:21:124;3811:2;3791:18;;;3784:30;3850:34;3830:18;;;3823:62;3921:6;3901:18;;;3894:34;3945:19;;10550:68:1;3570:400:124;10550:68:1;10636:21;;;10628:68;;;;;;;4177:2:124;10628:68:1;;;4159:21:124;4216:2;4196:18;;;4189:30;4255:34;4235:18;;;4228:62;4326:4;4306:18;;;4299:32;4348:19;;10628:68:1;3975:398:124;10628:68:1;10707:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1424:25:124;;;10758:32:1;;1397:18:124;10758:32:1;;;;;;;10457:340;;;:::o;11078:411::-;4102:18;;;;11178:24;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;11264:17;11244:37;;11240:243;;11325:6;11305:16;:26;;11297:68;;;;;;;4580:2:124;11297:68:1;;;4562:21:124;4619:2;4599:18;;;4592:30;4658:31;4638:18;;;4631:59;4707:18;;11297:68:1;4378:353:124;11297:68:1;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;7552:18;;;7544:68;;;;;;;4938:2:124;7544:68:1;;;4920:21:124;4977:2;4957:18;;;4950:30;5016:34;4996:18;;;4989:62;5087:7;5067:18;;;5060:35;5112:19;;7544:68:1;4736:401:124;7544:68:1;7630:16;;;7622:64;;;;;;;5344:2:124;7622:64:1;;;5326:21:124;5383:2;5363:18;;;5356:30;5422:34;5402:18;;;5395:62;5493:5;5473:18;;;5466:33;5516:19;;7622:64:1;5142:399:124;7622:64:1;7768:15;;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;;;;5748:2:124;7793:72:1;;;5730:21:124;5787:2;5767:18;;;5760:30;5826:34;5806:18;;;5799:62;5897:8;5877:18;;;5870:36;5923:19;;7793:72:1;5546:402:124;7793:72:1;7899:15;;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1424:25:124;;;8114:13:1;;8163:26;;1397:18:124;8163:26:1;;;;;;;8200:37;12073:91;14:607:124;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;754:42;743:54;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:124:o;1460:328::-;1537:6;1545;1553;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1645:29;1664:9;1645:29;:::i;:::-;1635:39;;1693:38;1727:2;1716:9;1712:18;1693:38;:::i;:::-;1683:48;;1778:2;1767:9;1763:18;1750:32;1740:42;;1460:328;;;;;:::o;1982:186::-;2041:6;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;1982:186;-1:-1:-1;;;1982:186:124:o;2173:260::-;2241:6;2249;2302:2;2290:9;2281:7;2277:23;2273:32;2270:52;;;2318:1;2315;2308:12;2270:52;2341:29;2360:9;2341:29;:::i;:::-;2331:39;;2389:38;2423:2;2412:9;2408:18;2389:38;:::i;:::-;2379:48;;2173:260;;;;;:::o;2438:437::-;2517:1;2513:12;;;;2560;;;2581:61;;2635:4;2627:6;2623:17;2613:27;;2581:61;2688:2;2680:6;2677:14;2657:18;2654:38;2651:218;;2725:77;2722:1;2715:88;2826:4;2823:1;2816:15;2854:4;2851:1;2844:15;2651:218;;2438:437;;;:::o;2880:279::-;2945:9;;;2966:10;;;2963:190;;;3009:77;3006:1;2999:88;3110:4;3107:1;3100:15;3138:4;3135:1;3128:15","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"}},"version":1},"id":1} \ No newline at end of file diff --git a/out/ERC721TokenReceiver.sol/ERC721TokenReceiver.json b/out/ERC721TokenReceiver.sol/ERC721TokenReceiver.json new file mode 100644 index 0000000..5d60926 --- /dev/null +++ b/out/ERC721TokenReceiver.sol/ERC721TokenReceiver.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Note: the ERC-165 identifier for this interface is 0x150b7a02.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.\",\"params\":{\"_data\":\"Additional data with no specified format.\",\"_from\":\"The address which previously owned the token.\",\"_operator\":\"The address which called `safeTransferFrom` function.\",\"_tokenId\":\"The NFT identifier which is being transferred.\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`. unless throwing\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handle the receipt of an NFT\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":\"ERC721TokenReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.","params":{"_data":"Additional data with no specified format.","_from":"The address which previously owned the token.","_operator":"The address which called `safeTransferFrom` function.","_tokenId":"The NFT identifier which is being transferred."},"returns":{"_0":"`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`. unless throwing"}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC721Received(address,address,uint256,bytes)":{"notice":"Handle the receipt of an NFT"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":"ERC721TokenReceiver"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"}},"version":1},"id":71} \ No newline at end of file diff --git a/out/ERC777TokensRecipient.sol/ERC777TokensRecipient.json b/out/ERC777TokensRecipient.sol/ERC777TokensRecipient.json new file mode 100644 index 0000000..cd9b1aa --- /dev/null +++ b/out/ERC777TokensRecipient.sol/ERC777TokensRecipient.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"tokensReceived","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operatorData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for contracts that will be called with the ERC777 token's `tokensReceived` method. The contract receiving the tokens must implement this interface in order to receive the tokens.\",\"kind\":\"dev\",\"methods\":{\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"details\":\"Called by the ERC777 token contract after a successful transfer or a minting operation.\",\"params\":{\"amount\":\"The amount of tokens that were transferred or minted.\",\"data\":\"Additional data that was passed during the transfer or minting operation.\",\"from\":\"The address of the sender.\",\"operator\":\"The address of the operator performing the transfer or minting operation.\",\"operatorData\":\"Additional data that was passed by the operator during the transfer or minting operation.\",\"to\":\"The address of the recipient.\"}}},\"title\":\"ERC777TokensRecipient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":\"ERC777TokensRecipient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"tokensReceived"}],"devdoc":{"kind":"dev","methods":{"tokensReceived(address,address,address,uint256,bytes,bytes)":{"details":"Called by the ERC777 token contract after a successful transfer or a minting operation.","params":{"amount":"The amount of tokens that were transferred or minted.","data":"Additional data that was passed during the transfer or minting operation.","from":"The address of the sender.","operator":"The address of the operator performing the transfer or minting operation.","operatorData":"Additional data that was passed by the operator during the transfer or minting operation.","to":"The address of the recipient."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":"ERC777TokensRecipient"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"}},"version":1},"id":72} \ No newline at end of file diff --git a/out/Enum.sol/Enum.json b/out/Enum.sol/Enum.json new file mode 100644 index 0000000..7b62012 --- /dev/null +++ b/out/Enum.sol/Enum.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Enum - Collection of enums used in Safe contracts.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/common/Enum.sol\":\"Enum\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/common/Enum.sol":"Enum"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"}},"version":1},"id":52} \ No newline at end of file diff --git a/out/Executor.sol/Executor.json b/out/Executor.sol/Executor.json new file mode 100644 index 0000000..3173762 --- /dev/null +++ b/out/Executor.sol/Executor.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Executor - A contract that can execute transactions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/base/Executor.sol\":\"Executor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/base/Executor.sol":"Executor"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"}},"version":1},"id":47} \ No newline at end of file diff --git a/out/ExtensibleBase.sol/ExtensibleBase.json b/out/ExtensibleBase.sol/ExtensibleBase.json new file mode 100644 index 0000000..c93368b --- /dev/null +++ b/out/ExtensibleBase.sol/ExtensibleBase.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"safeMethods","inputs":[{"name":"","type":"address","internalType":"contract Safe"},{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"AddedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"method","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ChangedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"oldMethod","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newMethod","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemovedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"safeMethods(address,bytes4)":"0a3fe054"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"method\",\"type\":\"bytes32\"}],\"name\":\"AddedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldMethod\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newMethod\",\"type\":\"bytes32\"}],\"name\":\"ChangedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"RemovedSafeMethod\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"safeMethods\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"details\":\"This contract provides the base for storage and modifiers for extensible fallback handlers\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Base contract for Extensible Fallback Handlers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":\"ExtensibleBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"method","type":"bytes32","indexed":false}],"type":"event","name":"AddedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"oldMethod","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newMethod","type":"bytes32","indexed":false}],"type":"event","name":"ChangedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false}],"type":"event","name":"RemovedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function","name":"safeMethods","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":"ExtensibleBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":65} \ No newline at end of file diff --git a/out/ExtensibleBase.sol/IFallbackMethod.json b/out/ExtensibleBase.sol/IFallbackMethod.json new file mode 100644 index 0000000..0f2af84 --- /dev/null +++ b/out/ExtensibleBase.sol/IFallbackMethod.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"handle","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"sender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"handle(address,address,uint256,bytes)":"25d6803f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"handle\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":\"IFallbackMethod\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"handle","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":"IFallbackMethod"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":65} \ No newline at end of file diff --git a/out/ExtensibleBase.sol/IStaticFallbackMethod.json b/out/ExtensibleBase.sol/IStaticFallbackMethod.json new file mode 100644 index 0000000..d106005 --- /dev/null +++ b/out/ExtensibleBase.sol/IStaticFallbackMethod.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"handle","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"sender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"handle(address,address,uint256,bytes)":"25d6803f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"handle\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":\"IStaticFallbackMethod\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"handle","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":"IStaticFallbackMethod"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":65} \ No newline at end of file diff --git a/out/FallbackHandler.sol/FallbackHandler.json b/out/FallbackHandler.sol/FallbackHandler.json new file mode 100644 index 0000000..4cf1958 --- /dev/null +++ b/out/FallbackHandler.sol/FallbackHandler.json @@ -0,0 +1 @@ +{"abi":[{"type":"fallback","stateMutability":"nonpayable"},{"type":"function","name":"safeMethods","inputs":[{"name":"","type":"address","internalType":"contract Safe"},{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setSafeMethod","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"newMethod","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"method","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ChangedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"oldMethod","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newMethod","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemovedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"safeMethods(address,bytes4)":"0a3fe054","setSafeMethod(bytes4,bytes32)":"64f95acc"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"method\",\"type\":\"bytes32\"}],\"name\":\"AddedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldMethod\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newMethod\",\"type\":\"bytes32\"}],\"name\":\"ChangedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"RemovedSafeMethod\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"safeMethods\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes32\",\"name\":\"newMethod\",\"type\":\"bytes32\"}],\"name\":\"setSafeMethod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"details\":\"This contract provides a fallback handler for Safes that can be extended with custom fallback handlers for specific methods.\",\"kind\":\"dev\",\"methods\":{\"setSafeMethod(bytes4,bytes32)\":{\"params\":{\"newMethod\":\"A contract that implements the `IFallbackMethod` or `IStaticFallbackMethod` interface\",\"selector\":\"The `bytes4` selector of the method to set the handler for\"}}},\"title\":\"FallbackHandler - A fully extensible fallback handler for Safes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setSafeMethod(bytes4,bytes32)\":{\"notice\":\"Setter for custom method handlers\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":\"FallbackHandler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"method","type":"bytes32","indexed":false}],"type":"event","name":"AddedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"oldMethod","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newMethod","type":"bytes32","indexed":false}],"type":"event","name":"ChangedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false}],"type":"event","name":"RemovedSafeMethod","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"contract Safe","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function","name":"safeMethods","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bytes32","name":"newMethod","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setSafeMethod"}],"devdoc":{"kind":"dev","methods":{"setSafeMethod(bytes4,bytes32)":{"params":{"newMethod":"A contract that implements the `IFallbackMethod` or `IStaticFallbackMethod` interface","selector":"The `bytes4` selector of the method to set the handler for"}}},"version":1},"userdoc":{"kind":"user","methods":{"setSafeMethod(bytes4,bytes32)":{"notice":"Setter for custom method handlers"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/FallbackHandler.sol":"FallbackHandler"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":66} \ No newline at end of file diff --git a/out/FallbackHandler.sol/IFallbackHandler.json b/out/FallbackHandler.sol/IFallbackHandler.json new file mode 100644 index 0000000..fda7e46 --- /dev/null +++ b/out/FallbackHandler.sol/IFallbackHandler.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"setSafeMethod","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"newMethod","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"setSafeMethod(bytes4,bytes32)":"64f95acc"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes32\",\"name\":\"newMethod\",\"type\":\"bytes32\"}],\"name\":\"setSafeMethod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":\"IFallbackHandler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bytes32","name":"newMethod","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setSafeMethod"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/FallbackHandler.sol":"IFallbackHandler"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":66} \ No newline at end of file diff --git a/out/FallbackManager.sol/FallbackManager.json b/out/FallbackManager.sol/FallbackManager.json new file mode 100644 index 0000000..ee85ed6 --- /dev/null +++ b/out/FallbackManager.sol/FallbackManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"fallback","stateMutability":"nonpayable"},{"type":"function","name":"setFallbackHandler","inputs":[{"name":"handler","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ChangedFallbackHandler","inputs":[{"name":"handler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"setFallbackHandler(address)":"f08a0323"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"}],\"name\":\"ChangedFallbackHandler\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"}],\"name\":\"setFallbackHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{\"setFallbackHandler(address)\":{\"details\":\"Only fallback calls without value and with data will be forwarded. This can only be done via a Safe transaction. Cannot be set to the Safe itself.\",\"params\":{\"handler\":\"contract to handle fallback calls.\"}}},\"title\":\"Fallback Manager - A contract managing fallback calls made to this contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setFallbackHandler(address)\":{\"notice\":\"Set Fallback Handler to `handler` for the Safe.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/base/FallbackManager.sol\":\"FallbackManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"handler","type":"address","indexed":true}],"type":"event","name":"ChangedFallbackHandler","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"handler","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFallbackHandler"}],"devdoc":{"kind":"dev","methods":{"setFallbackHandler(address)":{"details":"Only fallback calls without value and with data will be forwarded. This can only be done via a Safe transaction. Cannot be set to the Safe itself.","params":{"handler":"contract to handle fallback calls."}}},"version":1},"userdoc":{"kind":"user","methods":{"setFallbackHandler(address)":{"notice":"Set Fallback Handler to `handler` for the Safe."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/base/FallbackManager.sol":"FallbackManager"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"}},"version":1},"id":48} \ No newline at end of file diff --git a/out/GPv2AllowListAuthentication.sol/GPv2AllowListAuthentication.json b/out/GPv2AllowListAuthentication.sol/GPv2AllowListAuthentication.json new file mode 100644 index 0000000..e77e6c7 --- /dev/null +++ b/out/GPv2AllowListAuthentication.sol/GPv2AllowListAuthentication.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addSolver","inputs":[{"name":"solver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getStorageAt","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"initializeManager","inputs":[{"name":"manager_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isSolver","inputs":[{"name":"prospectiveSolver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"manager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeSolver","inputs":[{"name":"solver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManager","inputs":[{"name":"manager_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"simulateDelegatecall","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"response","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"simulateDelegatecallInternal","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"response","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"event","name":"ManagerChanged","inputs":[{"name":"newManager","type":"address","indexed":false,"internalType":"address"},{"name":"oldManager","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SolverAdded","inputs":[{"name":"solver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SolverRemoved","inputs":[{"name":"solver","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c63430008130033","sourceMap":"326:3342:7:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c63430008130033","sourceMap":"326:3342:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3519:147;;;;;;:::i;:::-;3633:26;;3610:4;3633:26;;;:7;:26;;;;;;;;;3519:147;;;;571:14:124;;564:22;546:41;;534:2;519:18;3519:147:7;;;;;;;;3738:376:25;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;533:22:7:-;;;;;;;;;;;;;;;2833:42:124;2821:55;;;2803:74;;2791:2;2776:18;533:22:7;2657:226:124;1633:488:25;;;;;;:::i;:::-;;:::i;1409:152:7:-;;;;;;:::i;:::-;;:::i;:::-;;3339:135;;;;;;:::i;:::-;;:::i;2551:190::-;;;;;;:::i;:::-;;:::i;2972:129::-;;;;;;:::i;:::-;;:::i;2557:680:25:-;;;;;;:::i;:::-;;:::i;3738:376::-;3870:21;3903:12;4006:14;:27;;4034:15;4006:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4071:35:25;;3984:66;;-1:-1:-1;3984:66:25;;-1:-1:-1;4060:47:25;;4071:35;;3984:66;;;;4071:35;;;:::i;:::-;;;;;;;;;;;;;4060:10;:47::i;:::-;3893:221;3738:376;;;;:::o;1633:488::-;1732:12;1756:19;1788:11;:6;1797:2;1788:11;:::i;:::-;1778:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1778:22:25;;1756:44;;1815:13;1810:282;1842:6;1834:5;:14;1810:282;;;1978:18;;;1972:25;2055:4;2044:16;;;2021:40;;;2014:54;1990:5;1850:7;1990:5;1850:7;:::i;:::-;;;;1810:282;;;-1:-1:-1;2108:6:25;-1:-1:-1;1633:488:25;;;;;:::o;1409:152:7:-;1737:13:23;;;;;;;;:33;;-1:-1:-1;2363:9:23;2351:22;2399:9;1754:16;1737:50;;;-1:-1:-1;1775:12:23;;;;1774:13;1737:50;1716:123;;;;;;;4602:2:124;1716:123:23;;;4584:21:124;4641:2;4621:18;;;4614:30;4680:28;4660:18;;;4653:56;4726:18;;1716:123:23;;;;;;;;;1850:19;1873:13;;;;;;1872:14;1896:98;;;;1930:13;:20;;1964:19;;;;;;1896:98;1485:7:7::1;:18:::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;1518:36:::1;::::0;;4990:34:124;;;5055:2;5040:18;;5033:43;;;;1518:36:7::1;::::0;4902:18:124;1518:36:7::1;;;;;;;2020:14:23::0;2016:66;;;2066:5;2050:21;;;;;;2016:66;1706:382;1409:152:7;:::o;3339:135::-;1742:7;;;;;:21;:7;1753:10;1742:21;1734:58;;;;;;;5289:2:124;1734:58:7;;;5271:21:124;5328:2;5308:18;;;5301:30;5367:26;5347:18;;;5340:54;5411:18;;1734:58:7;5087:348:124;1734:58:7;3408:15:::1;::::0;::::1;3426:5;3408:15:::0;;;:7:::1;:15;::::0;;;;;;;;:23;;;::::1;::::0;;3446:21;;2803:74:124;;;3446:21:7::1;::::0;2776:18:124;3446:21:7::1;;;;;;;;3339:135:::0;:::o;2551:190::-;2108:7;;;;;:21;:7;2119:10;2108:21;;:61;;-1:-1:-1;2159:10:7;2133:22;878:10:14;872:17;;716:189;2133:22:7;:36;;;2108:61;2087:128;;;;;;;5642:2:124;2087:128:7;;;5624:21:124;5681:2;5661:18;;;5654:30;5720:22;5700:18;;;5693:50;5760:18;;2087:128:7;5440:344:124;2087:128:7;2627:18:::1;2648:7:::0;;::::1;2665:18:::0;;::::1;2648:7:::0;2665:18;;::::1;::::0;;::::1;;::::0;;;2698:36:::1;::::0;;4990:34:124;;;2648:7:7;;;::::1;;5055:2:124::0;5040:18;;5033:43;;;2648:7:7;2698:36:::1;::::0;4902:18:124;2698:36:7::1;;;;;;;2617:124;2551:190:::0;:::o;2972:129::-;1742:7;;;;;:21;:7;1753:10;1742:21;1734:58;;;;;;;5289:2:124;1734:58:7;;;5271:21:124;5328:2;5308:18;;;5301:30;5367:26;5347:18;;;5340:54;5411:18;;1734:58:7;5087:348:124;1734:58:7;3038:15:::1;::::0;::::1;;::::0;;;3056:4:::1;3038:15;::::0;;;;;;;;:22;;;::::1;::::0;;::::1;::::0;;;3075:19;;2803:74:124;;;3075:19:7::1;::::0;2776:18:124;3075:19:7::1;2657:226:124::0;2557:680:25;2679:21;2712:22;2773:42;;;2829:14;2857:15;2737:145;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2966:29;;2737:145;;-1:-1:-1;2974:4:25;;2966:29;;2737:145;;2966:29;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2951:44;;;;;;3005:17;3025:8;3052:1;3034:8;:15;:19;;;;:::i;:::-;3025:29;;;;;;;;:::i;:::-;;;;;;;;;:37;;;3058:4;3025:37;;;3005:57;;3072:40;3082:8;3110:1;3092:8;:15;:19;;;;:::i;:::-;4491:22;;4332:197;3072:40;3126:12;3122:109;;;3154:15;;;;3122:109;3200:20;3211:8;3200:10;:20::i;:::-;2702:535;;2557:680;;;;:::o;4120:206::-;4300:8;4294:15;4287:4;4277:8;4273:19;4266:44;14:196:124;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:124:o;598:184::-;650:77;647:1;640:88;747:4;744:1;737:15;771:4;768:1;761:15;787:1054;864:6;872;925:2;913:9;904:7;900:23;896:32;893:52;;;941:1;938;931:12;893:52;964:29;983:9;964:29;:::i;:::-;954:39;;1044:2;1033:9;1029:18;1016:32;1067:18;1108:2;1100:6;1097:14;1094:34;;;1124:1;1121;1114:12;1094:34;1162:6;1151:9;1147:22;1137:32;;1207:7;1200:4;1196:2;1192:13;1188:27;1178:55;;1229:1;1226;1219:12;1178:55;1265:2;1252:16;1287:2;1283;1280:10;1277:36;;;1293:18;;:::i;:::-;1427:2;1421:9;1489:4;1481:13;;1332:66;1477:22;;;1501:2;1473:31;1469:40;1457:53;;;1525:18;;;1545:22;;;1522:46;1519:72;;;1571:18;;:::i;:::-;1611:10;1607:2;1600:22;1646:2;1638:6;1631:18;1686:7;1681:2;1676;1672;1668:11;1664:20;1661:33;1658:53;;;1707:1;1704;1697:12;1658:53;1763:2;1758;1754;1750:11;1745:2;1737:6;1733:15;1720:46;1808:1;1803:2;1798;1790:6;1786:15;1782:24;1775:35;1829:6;1819:16;;;;;;;787:1054;;;;;:::o;1846:250::-;1931:1;1941:113;1955:6;1952:1;1949:13;1941:113;;;2031:11;;;2025:18;2012:11;;;2005:39;1977:2;1970:10;1941:113;;;-1:-1:-1;;2088:1:124;2070:16;;2063:27;1846:250::o;2101:329::-;2142:3;2180:5;2174:12;2207:6;2202:3;2195:19;2223:76;2292:6;2285:4;2280:3;2276:14;2269:4;2262:5;2258:16;2223:76;:::i;:::-;2344:2;2332:15;2349:66;2328:88;2319:98;;;;2419:4;2315:109;;2101:329;-1:-1:-1;;2101:329:124:o;2435:217::-;2582:2;2571:9;2564:21;2545:4;2602:44;2642:2;2631:9;2627:18;2619:6;2602:44;:::i;2888:248::-;2956:6;2964;3017:2;3005:9;2996:7;2992:23;2988:32;2985:52;;;3033:1;3030;3023:12;2985:52;-1:-1:-1;;3056:23:124;;;3126:2;3111:18;;;3098:32;;-1:-1:-1;2888:248:124:o;3141:287::-;3270:3;3308:6;3302:13;3324:66;3383:6;3378:3;3371:4;3363:6;3359:17;3324:66;:::i;:::-;3406:16;;;;;3141:287;-1:-1:-1;;3141:287:124:o;3433:400::-;3584:3;3622:6;3616:13;3638:66;3697:6;3692:3;3685:4;3677:6;3673:17;3638:66;:::i;:::-;3781:14;;3774:22;3769:3;3765:32;3726:16;;;;3751:47;;;3825:1;3814:13;;3433:400;-1:-1:-1;;3433:400:124:o;3838:184::-;3890:77;3887:1;3880:88;3987:4;3984:1;3977:15;4011:4;4008:1;4001:15;4027:168;4100:9;;;4131;;4148:15;;;4142:22;;4128:37;4118:71;;4169:18;;:::i;4200:195::-;4239:3;4270:66;4263:5;4260:77;4257:103;;4340:18;;:::i;:::-;-1:-1:-1;4387:1:124;4376:13;;4200:195::o;5789:337::-;5976:42;5968:6;5964:55;5953:9;5946:74;6056:2;6051;6040:9;6036:18;6029:30;5927:4;6076:44;6116:2;6105:9;6101:18;6093:6;6076:44;:::i;:::-;6068:52;5789:337;-1:-1:-1;;;;5789:337:124:o;6131:128::-;6198:9;;;6219:11;;;6216:37;;;6233:18;;:::i;6264:184::-;6316:77;6313:1;6306:88;6413:4;6410:1;6403:15;6437:4;6434:1;6427:15","linkReferences":{}},"methodIdentifiers":{"addSolver(address)":"ec58f4b8","getStorageAt(uint256,uint256)":"5624b25b","initializeManager(address)":"7f7120fe","isSolver(address)":"02cc250d","manager()":"481c6a75","removeSolver(address)":"8fd57b92","setManager(address)":"d0ebdbe7","simulateDelegatecall(address,bytes)":"f84436bd","simulateDelegatecallInternal(address,bytes)":"43218e19"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldManager\",\"type\":\"address\"}],\"name\":\"ManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"}],\"name\":\"SolverAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"}],\"name\":\"SolverRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"}],\"name\":\"addSolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager_\",\"type\":\"address\"}],\"name\":\"initializeManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prospectiveSolver\",\"type\":\"address\"}],\"name\":\"isSolver\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"}],\"name\":\"removeSolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager_\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecallInternal\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Gnosis Developers\",\"events\":{\"ManagerChanged(address,address)\":{\"details\":\"Event emitted when the manager changes.\"},\"SolverAdded(address)\":{\"details\":\"Event emitted when a solver gets added.\"},\"SolverRemoved(address)\":{\"details\":\"Event emitted when a solver gets removed.\"}},\"kind\":\"dev\",\"methods\":{\"addSolver(address)\":{\"details\":\"Add an address to the set of allowed solvers. This method can only be called by the contract manager. This function is idempotent.\",\"params\":{\"solver\":\"The solver address to add.\"}},\"getStorageAt(uint256,uint256)\":{\"details\":\"Reads `length` bytes of storage in the currents contract\",\"params\":{\"length\":\"- the number of words (32 bytes) of data to read\",\"offset\":\"- the offset in the current contract's storage in words to start reading from\"},\"returns\":{\"_0\":\"the bytes that were read.\"}},\"initializeManager(address)\":{\"details\":\"Initialize the manager to a value. This method is a contract initializer that is called exactly once after creation. An initializer is used instead of a constructor so that this contract can be used behind a proxy. This initializer is idempotent.\",\"params\":{\"manager_\":\"The manager to initialize the contract with.\"}},\"isSolver(address)\":{\"details\":\"determines whether the provided address is an authenticated solver.\",\"params\":{\"prospectiveSolver\":\"the address of prospective solver.\"},\"returns\":{\"_0\":\"true when prospectiveSolver is an authenticated solver, otherwise false.\"}},\"removeSolver(address)\":{\"details\":\"Removes an address to the set of allowed solvers. This method can only be called by the contract manager. This function is idempotent.\",\"params\":{\"solver\":\"The solver address to remove.\"}},\"setManager(address)\":{\"details\":\"Set the manager for this contract. This method can be called by the current manager (if they want to to reliquish the role and give it to another address) or the contract owner (i.e. the proxy admin).\",\"params\":{\"manager_\":\"The new contract manager address.\"}},\"simulateDelegatecall(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}},\"simulateDelegatecallInternal(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Returns encoded result as revert message concatenated with the success flag of the inner call as a last byte.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}}},\"stateVariables\":{\"manager\":{\"details\":\"The address of the manager that has permissions to add and remove solvers.\"},\"solvers\":{\"details\":\"The set of allowed solvers. Allowed solvers have a value of `true` in this mapping.\"}},\"title\":\"Gnosis Protocol v2 Access Control Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":\"GPv2AllowListAuthentication\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"newManager","type":"address","indexed":false},{"internalType":"address","name":"oldManager","type":"address","indexed":false}],"type":"event","name":"ManagerChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"solver","type":"address","indexed":false}],"type":"event","name":"SolverAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"solver","type":"address","indexed":false}],"type":"event","name":"SolverRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"solver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addSolver"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStorageAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"manager_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initializeManager"},{"inputs":[{"internalType":"address","name":"prospectiveSolver","type":"address"}],"stateMutability":"view","type":"function","name":"isSolver","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"solver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeSolver"},{"inputs":[{"internalType":"address","name":"manager_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setManager"},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateDelegatecall","outputs":[{"internalType":"bytes","name":"response","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateDelegatecallInternal","outputs":[{"internalType":"bytes","name":"response","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"addSolver(address)":{"details":"Add an address to the set of allowed solvers. This method can only be called by the contract manager. This function is idempotent.","params":{"solver":"The solver address to add."}},"getStorageAt(uint256,uint256)":{"details":"Reads `length` bytes of storage in the currents contract","params":{"length":"- the number of words (32 bytes) of data to read","offset":"- the offset in the current contract's storage in words to start reading from"},"returns":{"_0":"the bytes that were read."}},"initializeManager(address)":{"details":"Initialize the manager to a value. This method is a contract initializer that is called exactly once after creation. An initializer is used instead of a constructor so that this contract can be used behind a proxy. This initializer is idempotent.","params":{"manager_":"The manager to initialize the contract with."}},"isSolver(address)":{"details":"determines whether the provided address is an authenticated solver.","params":{"prospectiveSolver":"the address of prospective solver."},"returns":{"_0":"true when prospectiveSolver is an authenticated solver, otherwise false."}},"removeSolver(address)":{"details":"Removes an address to the set of allowed solvers. This method can only be called by the contract manager. This function is idempotent.","params":{"solver":"The solver address to remove."}},"setManager(address)":{"details":"Set the manager for this contract. This method can be called by the current manager (if they want to to reliquish the role and give it to another address) or the contract owner (i.e. the proxy admin).","params":{"manager_":"The new contract manager address."}},"simulateDelegatecall(address,bytes)":{"details":"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}},"simulateDelegatecallInternal(address,bytes)":{"details":"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Returns encoded result as revert message concatenated with the success flag of the inner call as a last byte.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":"GPv2AllowListAuthentication"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"}},"version":1},"id":7} \ No newline at end of file diff --git a/out/GPv2Authentication.sol/GPv2Authentication.json b/out/GPv2Authentication.sol/GPv2Authentication.json new file mode 100644 index 0000000..716faaf --- /dev/null +++ b/out/GPv2Authentication.sol/GPv2Authentication.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isSolver","inputs":[{"name":"prospectiveSolver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isSolver(address)":"02cc250d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prospectiveSolver\",\"type\":\"address\"}],\"name\":\"isSolver\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Gnosis Developers\",\"kind\":\"dev\",\"methods\":{\"isSolver(address)\":{\"details\":\"determines whether the provided address is an authenticated solver.\",\"params\":{\"prospectiveSolver\":\"the address of prospective solver.\"},\"returns\":{\"_0\":\"true when prospectiveSolver is an authenticated solver, otherwise false.\"}}},\"title\":\"Gnosis Protocol v2 Authentication Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":\"GPv2Authentication\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"prospectiveSolver","type":"address"}],"stateMutability":"view","type":"function","name":"isSolver","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"isSolver(address)":{"details":"determines whether the provided address is an authenticated solver.","params":{"prospectiveSolver":"the address of prospective solver."},"returns":{"_0":"true when prospectiveSolver is an authenticated solver, otherwise false."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":"GPv2Authentication"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"}},"version":1},"id":10} \ No newline at end of file diff --git a/out/GPv2EIP1271.sol/EIP1271Verifier.json b/out/GPv2EIP1271.sol/EIP1271Verifier.json new file mode 100644 index 0000000..531f7f0 --- /dev/null +++ b/out/GPv2EIP1271.sol/EIP1271Verifier.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Standardized interface for an implementation of smart contract signatures as described in EIP-1271. The code that follows is identical to the code in the standard with the exception of formatting and syntax changes to adapt the code to our Solidity version.\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"_hash\":\"Hash of the data to be signed\",\"_signature\":\"Signature byte array associated with _data MUST return the bytes4 magic value 0x1626ba7e when function passes. MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5) MUST allow external calls\"}}},\"title\":\"EIP1271 Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":\"EIP1271Verifier\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"isValidSignature(bytes32,bytes)":{"details":"Should return whether the signature provided is valid for the provided data","params":{"_hash":"Hash of the data to be signed","_signature":"Signature byte array associated with _data MUST return the bytes4 magic value 0x1626ba7e when function passes. MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5) MUST allow external calls"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":"EIP1271Verifier"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"}},"version":1},"id":11} \ No newline at end of file diff --git a/out/GPv2EIP1271.sol/GPv2EIP1271.json b/out/GPv2EIP1271.sol/GPv2EIP1271.json new file mode 100644 index 0000000..2775a0c --- /dev/null +++ b/out/GPv2EIP1271.sol/GPv2EIP1271.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cdf95dd59648ee7e05b23cca25b9978a88192108d58c9823d08cf7b81617814164736f6c63430008130033","sourceMap":"79:287:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;79:287:11;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cdf95dd59648ee7e05b23cca25b9978a88192108d58c9823d08cf7b81617814164736f6c63430008130033","sourceMap":"79:287:11:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAGICVALUE\":{\"details\":\"Value returned by a call to `isValidSignature` if the signature was verified successfully. The value is defined in EIP-1271 as: bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\"))\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":\"GPv2EIP1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":"GPv2EIP1271"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"}},"version":1},"id":11} \ No newline at end of file diff --git a/out/GPv2EIP1967.sol/GPv2EIP1967.json b/out/GPv2EIP1967.sol/GPv2EIP1967.json new file mode 100644 index 0000000..a813d55 --- /dev/null +++ b/out/GPv2EIP1967.sol/GPv2EIP1967.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cba91308d685d6745fb10b841164f17d1781da258b7599e1894eb923ef95a41364736f6c63430008130033","sourceMap":"79:1171:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;79:1171:14;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cba91308d685d6745fb10b841164f17d1781da258b7599e1894eb923ef95a41364736f6c63430008130033","sourceMap":"79:1171:14:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"The storage slot where the proxy administrator is stored, defined as `keccak256('eip1967.proxy.admin') - 1`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":\"GPv2EIP1967\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":"GPv2EIP1967"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"}},"version":1},"id":14} \ No newline at end of file diff --git a/out/GPv2Interaction.sol/GPv2Interaction.json b/out/GPv2Interaction.sol/GPv2Interaction.json new file mode 100644 index 0000000..00cebca --- /dev/null +++ b/out/GPv2Interaction.sol/GPv2Interaction.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e5f1fdb35c4ac5e71640bad6b2c1a916b1c1361cf1cc9e7f05750176e170282b64736f6c63430008130033","sourceMap":"159:2775:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;159:2775:15;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e5f1fdb35c4ac5e71640bad6b2c1a916b1c1361cf1cc9e7f05750176e170282b64736f6c63430008130033","sourceMap":"159:2775:15:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Gnosis Developers\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Gnosis Protocol v2 Interaction Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":\"GPv2Interaction\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":"GPv2Interaction"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"}},"version":1},"id":15} \ No newline at end of file diff --git a/out/GPv2Order.sol/GPv2Order.json b/out/GPv2Order.sol/GPv2Order.json new file mode 100644 index 0000000..c84ad59 --- /dev/null +++ b/out/GPv2Order.sol/GPv2Order.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220028bedb84541289248698ab119f75a19247ecf95fb777b5356059f546b949c6464736f6c63430008130033","sourceMap":"189:9928:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;189:9928:16;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220028bedb84541289248698ab119f75a19247ecf95fb777b5356059f546b949c6464736f6c63430008130033","sourceMap":"189:9928:16:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Gnosis Developers\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"BALANCE_ERC20\":{\"details\":\"The TokenBalance marker value for using direct ERC20 balances for computing the order struct hash. This value is pre-computed from the following expression: ``` keccak256(\\\"erc20\\\") ```\"},\"BALANCE_EXTERNAL\":{\"details\":\"The TokenBalance marker value for using Balancer Vault external balances (in order to re-use Vault ERC20 approvals) for computing the order struct hash. This value is pre-computed from the following expression: ``` keccak256(\\\"external\\\") ```\"},\"BALANCE_INTERNAL\":{\"details\":\"The TokenBalance marker value for using Balancer Vault internal balances for computing the order struct hash. This value is pre-computed from the following expression: ``` keccak256(\\\"internal\\\") ```\"},\"KIND_BUY\":{\"details\":\"The OrderKind marker value for a buy order for computing the order struct hash. This value is pre-computed from the following expression: ``` keccak256(\\\"buy\\\") ```\"},\"KIND_SELL\":{\"details\":\"The marker value for a sell order for computing the order struct hash. This allows the EIP-712 compatible wallets to display a descriptive string for the order kind (instead of 0 or 1). This value is pre-computed from the following expression: ``` keccak256(\\\"sell\\\") ```\"},\"RECEIVER_SAME_AS_OWNER\":{\"details\":\"Marker address used to indicate that the receiver of the trade proceeds should the owner of the order. This is chosen to be `address(0)` for gas efficiency as it is expected to be the most common case.\"},\"TYPE_HASH\":{\"details\":\"The order EIP-712 type hash for the [`GPv2Order.Data`] struct. This value is pre-computed from the following expression: ``` keccak256( \\\"Order(\\\" + \\\"address sellToken,\\\" + \\\"address buyToken,\\\" + \\\"address receiver,\\\" + \\\"uint256 sellAmount,\\\" + \\\"uint256 buyAmount,\\\" + \\\"uint32 validTo,\\\" + \\\"bytes32 appData,\\\" + \\\"uint256 feeAmount,\\\" + \\\"string kind,\\\" + \\\"bool partiallyFillable,\\\" + \\\"string sellTokenBalance,\\\" + \\\"string buyTokenBalance\\\" + \\\")\\\" ) ```\"},\"UID_LENGTH\":{\"details\":\"The byte length of an order unique identifier.\"}},\"title\":\"Gnosis Protocol v2 Order Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":\"GPv2Order\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":"GPv2Order"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"}},"version":1},"id":16} \ No newline at end of file diff --git a/out/GPv2SafeERC20.sol/GPv2SafeERC20.json b/out/GPv2SafeERC20.sol/GPv2SafeERC20.json new file mode 100644 index 0000000..1194fef --- /dev/null +++ b/out/GPv2SafeERC20.sol/GPv2SafeERC20.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220995e1bb47966930061d4e2e33d5acbfc3eae7bd210c48b78af4b2c9703130d3064736f6c63430008130033","sourceMap":"272:5149:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;272:5149:17;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220995e1bb47966930061d4e2e33d5acbfc3eae7bd210c48b78af4b2c9703130d3064736f6c63430008130033","sourceMap":"272:5149:17:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Gnosis Developers\",\"details\":\"Gas-efficient version of Openzeppelin's SafeERC20 contract.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Gnosis Protocol v2 Safe ERC20 Transfer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":\"GPv2SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":"GPv2SafeERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"}},"version":1},"id":17} \ No newline at end of file diff --git a/out/GPv2Settlement.sol/GPv2Settlement.json b/out/GPv2Settlement.sol/GPv2Settlement.json new file mode 100644 index 0000000..0bc7b27 --- /dev/null +++ b/out/GPv2Settlement.sol/GPv2Settlement.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"authenticator_","type":"address","internalType":"contract GPv2Authentication"},{"name":"vault_","type":"address","internalType":"contract IVault"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"authenticator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Authentication"}],"stateMutability":"view"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"filledAmount","inputs":[{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"freeFilledAmountStorage","inputs":[{"name":"orderUids","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"freePreSignatureStorage","inputs":[{"name":"orderUids","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getStorageAt","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"invalidateOrder","inputs":[{"name":"orderUid","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"preSignature","inputs":[{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setPreSignature","inputs":[{"name":"orderUid","type":"bytes","internalType":"bytes"},{"name":"signed","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"clearingPrices","type":"uint256[]","internalType":"uint256[]"},{"name":"trades","type":"tuple[]","internalType":"struct GPv2Trade.Data[]","components":[{"name":"sellTokenIndex","type":"uint256","internalType":"uint256"},{"name":"buyTokenIndex","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"flags","type":"uint256","internalType":"uint256"},{"name":"executedAmount","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"interactions","type":"tuple[][3]","internalType":"struct GPv2Interaction.Data[][3]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"simulateDelegatecall","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"response","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"simulateDelegatecallInternal","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"response","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"swaps","type":"tuple[]","internalType":"struct IVault.BatchSwapStep[]","components":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"assetInIndex","type":"uint256","internalType":"uint256"},{"name":"assetOutIndex","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"trade","type":"tuple","internalType":"struct GPv2Trade.Data","components":[{"name":"sellTokenIndex","type":"uint256","internalType":"uint256"},{"name":"buyTokenIndex","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"sellAmount","type":"uint256","internalType":"uint256"},{"name":"buyAmount","type":"uint256","internalType":"uint256"},{"name":"validTo","type":"uint32","internalType":"uint32"},{"name":"appData","type":"bytes32","internalType":"bytes32"},{"name":"feeAmount","type":"uint256","internalType":"uint256"},{"name":"flags","type":"uint256","internalType":"uint256"},{"name":"executedAmount","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"},{"type":"function","name":"vaultRelayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2VaultRelayer"}],"stateMutability":"view"},{"type":"event","name":"Interaction","inputs":[{"name":"target","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"OrderInvalidated","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"orderUid","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"PreSignature","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"orderUid","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"signed","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Settlement","inputs":[{"name":"solver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Trade","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"sellToken","type":"address","indexed":false,"internalType":"contract IERC20"},{"name":"buyToken","type":"address","indexed":false,"internalType":"contract IERC20"},{"name":"sellAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"buyAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderUid","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033","sourceMap":"665:18531:8:-:0;;;2867:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2526:175:22;;;898:117;2526:175;;;901:25:124;1139:28:22;942:18:124;;;935:34;;;;1297:15:22;985:18:124;;;978:34;2456:9:22;1028:18:124;;;1021:34;;;2682:4:22;1071:19:124;;;1064:61;2456:9:22;873:19:124;;2526:175:22;;;-1:-1:-1;;2526:175:22;;;;;;;;;;2503:208;;2526:175;2503:208;;;;2485:226;;1871:1:24;1976:22;;-1:-1:-1;;;;;2939:30:8;;;;;2979:14;;;;2987:6;;-1:-1:-1;3018:28:8;;;:::i;:::-;-1:-1:-1;;;;;1315:32:124;;;1297:51;;1285:2;1270:18;3018:28:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3003:43:8;;;-1:-1:-1;665:18531:8;;-1:-1:-1;665:18531:8;;;;;;;;;:::o;14:151:124:-;-1:-1:-1;;;;;109:31:124;;99:42;;89:70;;155:1;152;145:12;89:70;14:151;:::o;170:467::-;291:6;299;352:2;340:9;331:7;327:23;323:32;320:52;;;368:1;365;358:12;320:52;400:9;394:16;419:51;464:5;419:51;:::i;:::-;539:2;524:18;;518:25;489:5;;-1:-1:-1;552:53:124;518:25;552:53;:::i;:::-;624:7;614:17;;;170:467;;;;;:::o;1136:218::-;665:18531:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c63430008130033","sourceMap":"665:18531:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5053:705;;;;;;;;;;-1:-1:-1;5053:705:8;;;;;:::i;:::-;;:::i;:::-;;10228:303;;;;;;;;;;-1:-1:-1;10228:303:8;;;;;:::i;:::-;;:::i;1186:49::-;;;;;;;;;;;;;;;;;;2832:42:124;2820:55;;;2802:74;;2790:2;2775:18;1186:49:8;;;;;;;;1950:45;;;;;;;;;;-1:-1:-1;1950:45:8;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4480:25:124;;;4468:2;4453:18;1950:45:8;4334:177:124;3738:376:25;;;;;;;;;;-1:-1:-1;3738:376:25;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1633:488::-;;;;;;;;;;-1:-1:-1;1633:488:25;;;;;:::i;:::-;;:::i;6268:3613:8:-;;;;;;;;;;-1:-1:-1;6268:3613:8;;;;;:::i;:::-;;:::i;1483:46::-;;;;;;;;;;;;;;;11219:158;;;;;;;;;;-1:-1:-1;11219:158:8;;;;;:::i;:::-;;:::i;1962:45:22:-;;;;;;;;;;-1:-1:-1;1962:45:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2973:401;;;;;;;;;;-1:-1:-1;2973:401:22;;;;;:::i;:::-;;:::i;10796:158:8:-;;;;;;;;;;-1:-1:-1;10796:158:8;;;;;:::i;:::-;;:::i;1810:40:22:-;;;;;;;;;;;;;;;2557:680:25;;;;;;;;;;-1:-1:-1;2557:680:25;;;;;:::i;:::-;;:::i;1317:29:8:-;;;;;;;;;;;;;;;5053:705;1914:1:24;2493:7;;:19;2485:63;;;;-1:-1:-1;;;2485:63:24;;9316:2:124;2485:63:24;;;9298:21:124;9355:2;9335:18;;;9328:30;9394:33;9374:18;;;9367:61;9445:18;;2485:63:24;;;;;;;;;1914:1;2623:7;:18;3447:34:8::1;::::0;;;;3470:10:::1;3447:34;::::0;::::1;2802:74:124::0;3447:13:8::1;:22;;::::0;::::1;::::0;2775:18:124;;3447:34:8::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3439:65;;;::::0;-1:-1:-1;;;3439:65:8;;10157:2:124;3439:65:8::1;::::0;::::1;10139:21:124::0;10196:2;10176:18;;;10169:30;10235:20;10215:18;;;10208:48;10273:18;;3439:65:8::1;9955:342:124::0;3439:65:8::1;5294:36:::2;5314:12:::0;5327:1:::2;5314:15;;;;;;;;;;:::i;:::-;5294:19;:36::i;:::-;5355:38;5407:39:::0;5459:54:::2;5482:6;;5490:14;;5506:6;;5459:22;:54::i;:::-;5524:46;::::0;;;;5341:172;;-1:-1:-1;5341:172:8;-1:-1:-1;5524:33:8::2;:12;:33;::::0;::::2;::::0;:46:::2;::::0;5341:172;;5524:46:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5581:36;5601:12;5614:1;5601:15;;;;;;;:::i;5581:36::-;5628:38;:24;:5;:24;5653:12:::0;5628:24:::2;:38::i;:::-;5677:36;5697:12:::0;5710:1:::2;5697:15;::::0;5677:36:::2;5729:22;::::0;5740:10:::2;::::0;5729:22:::2;::::0;;;::::2;-1:-1:-1::0;;1871:1:24;2796:22;;-1:-1:-1;;;;;;;5053:705:8:o;10228:303::-;10300:13;10319:32;:8;;:30;:32::i;:::-;-1:-1:-1;10297:54:8;-1:-1:-1;;10369:19:8;;;10378:10;10369:19;10361:63;;;;-1:-1:-1;;;10361:63:8;;12366:2:124;10361:63:8;;;12348:21:124;12405:2;12385:18;;;12378:30;12444:33;12424:18;;;12417:61;12495:18;;10361:63:8;12164:355:124;10361:63:8;10459:17;10434:12;10447:8;;10434:22;;;;;;;:::i;:::-;;;;;;;;;;;;;:42;;;;10508:5;10491:33;;;10515:8;;10491:33;;;;;;;:::i;:::-;;;;;;;;10287:244;10228:303;;:::o;3738:376:25:-;3870:21;3903:12;4006:14;:27;;4034:15;4006:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4071:35:25;;3984:66;;-1:-1:-1;3984:66:25;;-1:-1:-1;4060:47:25;;4071:35;;3984:66;;;;4071:35;;;:::i;:::-;;;;;;;;;;;;;4060:10;:47::i;:::-;3893:221;3738:376;;;;:::o;1633:488::-;1732:12;1756:19;1788:11;:6;1797:2;1788:11;:::i;:::-;1778:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1778:22:25;;1756:44;;1815:13;1810:282;1842:6;1834:5;:14;1810:282;;;1978:18;;;1972:25;2055:4;2044:16;;;2021:40;;;2014:54;1990:5;1850:7;1990:5;1850:7;:::i;:::-;;;;1810:282;;;-1:-1:-1;2108:6:25;-1:-1:-1;1633:488:25;;;;;:::o;6268:3613:8:-;1914:1:24;2493:7;;:19;2485:63;;;;-1:-1:-1;;;2485:63:24;;9316:2:124;2485:63:24;;;9298:21:124;9355:2;9335:18;;;9328:30;9394:33;9374:18;;;9367:61;9445:18;;2485:63:24;9114:355:124;2485:63:24;1914:1;2623:7;:18;3447:34:8::1;::::0;;;;3470:10:::1;3447:34;::::0;::::1;2802:74:124::0;3447:13:8::1;:22;;::::0;::::1;::::0;2775:18:124;;3447:34:8::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3439:65;;;::::0;-1:-1:-1;;;3439:65:8;;10157:2:124;3439:65:8::1;::::0;::::1;10139:21:124::0;10196:2;10176:18;;;10169:30;10235:20;10215:18;;;10208:48;10273:18;;3439:65:8::1;9955:342:124::0;3439:65:8::1;6451:36:::2;6490:24;:22;:24::i;:::-;6554:19:::0;;6451:63;;-1:-1:-1;6583:52:8::2;6451:63:::0;6621:6;;6629:5;6583:21:::2;:52::i;:::-;6646:20;6683:19;6669:5;:10;;;:33;:112;;6756:25;6669:112;;;6717:24;6669:112;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6851:20:8;;::::2;::::0;6836:35:::2;::::0;;::::2;::::0;;6921:22:::2;::::0;::::2;::::0;6947:26:::2;6921:52:::0;;::::2;6881:92:::0;;;7009:23;;::::2;::::0;6983:50:::2;::::0;;7081:21:::2;::::0;::::2;::::0;:51:::2;7043:89:::0;;;6646:135;;-1:-1:-1;7181:6:8;7168:27:::2;::::0;::::2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;7168:27:8::2;-1:-1:-1::0;7458:10:8::2;::::0;::::2;::::0;7143:52;;-1:-1:-1;7227:20:8::2;::::0;::::2;;::::0;7458:33;;7454:498:::2;;7530:5;:15;;;7515:11;:30;;7507:62;;;::::0;-1:-1:-1;;;7507:62:8;;14840:2:124;7507:62:8::2;::::0;::::2;14822:21:124::0;14879:2;14859:18;;;14852:30;14918:21;14898:18;;;14891:49;14957:18;;7507:62:8::2;14638:343:124::0;7507:62:8::2;7614:27;:5;:16;;;:25;:27::i;:::-;7583:6;7590:5;:20;;;7583:28;;;;;;;;:::i;:::-;;;;;;:58;;;::::0;::::2;7686:22;:11;:20;:22::i;:::-;7685:23;;;:::i;:::-;7655:6;7662:5;:19;;;7655:27;;;;;;;;:::i;:::-;;;;;;:53;;;::::0;::::2;7454:498;;;7762:5;:16;;;7747:11;:31;;7739:64;;;::::0;-1:-1:-1;;;7739:64:8;;15384:2:124;7739:64:8::2;::::0;::::2;15366:21:124::0;15423:2;15403:18;;;15396:30;15462:22;15442:18;;;15435:50;15502:18;;7739:64:8::2;15182:344:124::0;7739:64:8::2;7848:22;:11;:20;:22::i;:::-;7817:6;7824:5;:20;;;7817:28;;;;;;;;:::i;:::-;;;;;;:53;;;::::0;::::2;7915:26;:5;:15;;;:24;:26::i;:::-;7914:27;;;:::i;:::-;7884:6;7891:5;:19;;;7884:27;;;;;;;;:::i;:::-;;;;;;:57;;;::::0;::::2;7454:498;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8030:14:8::2;:20;;;8008:11;:19;;:42;;;;;;;;;::::0;::::2;8080:5;:15;;;8060:11;:17;;:35;;;;;;;;;::::0;::::2;8126:5;:15;;;8105:11;:18;;:36;;;::::0;::::2;8173:5;:22;;;8151:11;:19;;:44;;;::::0;::::2;8206:27;8236:12;:29;;;8279:4;8297:5;;8316:6;;8336:5;8355:6;8486:5;:13;;;8513:11;8236:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;::::0;::::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;8206:328;;8545:21;8569:14;:18;;;8545:42;;8597:26;8626:58;:11;8638:5;:20;;;8626:33;;;;;;;;:::i;:::-;;;;;;;:56;:58::i;:::-;8597:87;;8694:25;8722:60;8724:11;8736:5;:19;;;8724:32;;;;;;;;:::i;:::-;;;;;;;8723:33;;;:::i;:::-;8722:58;:60::i;:::-;8694:88;;9085:12;9098:8;9085:22;;;;;;:::i;:::-;;;;;;;;;;;;;;9111:1;9085:27;9077:58;;;::::0;-1:-1:-1;;;9077:58:8;;21272:2:124;9077:58:8::2;::::0;::::2;21254:21:124::0;21311:2;21291:18;;;21284:30;21350:20;21330:18;;;21323:48;21388:18;;9077:58:8::2;21070:342:124::0;9077:58:8::2;9163:19;9149:5;:10;;;:33:::0;9145:457:::2;;9245:5;:16;;;9223:18;:38;9198:128;;;::::0;-1:-1:-1;;;9198:128:8;;21619:2:124;9198:128:8::2;::::0;::::2;21601:21:124::0;21658:2;21638:18;;;21631:30;21697:33;21677:18;;;21670:61;21748:18;;9198:128:8::2;21417:355:124::0;9198:128:8::2;9365:5;:16;;;9340:12;9353:8;9340:22;;;;;;:::i;:::-;::::0;;;::::2;::::0;;;;;::::2;::::0;;;:41;9145:457:::2;;;9458:5;:15;;;9437:17;:36;9412:125;;;::::0;-1:-1:-1;;;9412:125:8;;21979:2:124;9412:125:8::2;::::0;::::2;21961:21:124::0;22018:2;21998:18;;;21991:30;22057:32;22037:18;;;22030:60;22107:18;;9412:125:8::2;21777:354:124::0;9412:125:8::2;9576:5;:15;;;9551:12;9564:8;9551:22;;;;;;:::i;:::-;::::0;;;::::2;::::0;;;;;::::2;::::0;;;:40;9145:457:::2;9636:14;:20;;;9617:220;;;9670:5;:15;;;9699:5;:14;;;9727:18;9759:17;9790:5;:15;;;9819:8;9617:220;;;;;;;;;;;:::i;:::-;;;;;;;;9852:22;::::0;9863:10:::2;::::0;9852:22:::2;::::0;;;::::2;-1:-1:-1::0;;1871:1:24;2796:22;;-1:-1:-1;;;;;;;;;;;;;;6268:3613:8:o;11219:158::-;3693:4;3702:10;3685:27;3677:64;;;;-1:-1:-1;;;3677:64:8;;23028:2:124;3677:64:8;;;23010:21:124;23067:2;23047:18;;;23040:30;23106:26;23086:18;;;23079:54;23150:18;;3677:64:8;22826:348:124;3677:64:8;11329:41:::1;11346:12;11360:9;;11329:16;:41::i;:::-;11219:158:::0;;:::o;2973:401:22:-;3058:13;3077:32;:8;;:30;:32::i;:::-;-1:-1:-1;3055:54:22;-1:-1:-1;;3127:19:22;;;3136:10;3127:19;3119:58;;;;-1:-1:-1;;;3119:58:22;;23381:2:124;3119:58:22;;;23363:21:124;23420:2;23400:18;;;23393:30;23459:28;23439:18;;;23432:56;23505:18;;3119:58:22;23179:350:124;3119:58:22;3191:6;3187:129;;;1434:39;1426:48;;3213:12;3226:8;;3213:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;:35;3187:129;;;3304:1;3279:12;3292:8;;3279:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;:26;3187:129;3343:5;3330:37;;;3350:8;;3360:6;3330:37;;;;;;;;:::i;:::-;;;;;;;;3045:329;2973:401;;;:::o;10796:158:8:-;3693:4;3702:10;3685:27;3677:64;;;;-1:-1:-1;;;3677:64:8;;23028:2:124;3677:64:8;;;23010:21:124;23067:2;23047:18;;;23040:30;23106:26;23086:18;;;23079:54;23150:18;;3677:64:8;22826:348:124;3677:64:8;10906:41:::1;10923:12;10937:9;;10906:16;:41::i;2557:680:25:-:0;2679:21;2712:22;2773:42;;;2829:14;2857:15;2737:145;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2966:29;;2737:145;;-1:-1:-1;2974:4:25;;2966:29;;2737:145;;2966:29;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2951:44;;;;;;3005:17;3025:8;3052:1;3034:8;:15;:19;;;;:::i;:::-;3025:29;;;;;;;;:::i;:::-;;;;;;;;;:37;;;3058:4;3025:37;;;3005:57;;3072:40;3082:8;3110:1;3092:8;:15;:19;;;;:::i;:::-;4491:22;;4332:197;3072:40;3126:12;3122:109;;;3154:15;;;;3122:109;3200:20;3211:8;3200:10;:20::i;:::-;2702:535;;2557:680;;;;:::o;17662:753:8:-;17775:9;17770:639;17786:23;;;17770:639;;;17830:41;17874:12;;17887:1;17874:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;17830:59;-1:-1:-1;18073:43:8;18103:12;18073:43;:18;;;;17830:59;18073:18;:::i;:::-;:43;;;18048:129;;;;-1:-1:-1;;;18048:129:8;;25178:2:124;18048:129:8;;;25160:21:124;25217:2;25197:18;;;25190:30;25256:29;25236:18;;;25229:57;25303:18;;18048:129:8;24976:351:124;18048:129:8;18191:36;18215:11;18191:23;:36::i;:::-;18276:18;;;;:11;:18;:::i;:::-;18247:151;;;18312:11;:17;;;18347:37;18372:11;18347:24;:37::i;:::-;18247:151;;;25504:25:124;;;25577:66;25565:79;;;25560:2;25545:18;;25538:107;25477:18;18247:151:8;;;;;;;-1:-1:-1;17811:3:8;;;:::i;:::-;;;17770:639;;;;17662:753;;:::o;11987:990::-;12191:38;12243:39;12307:36;12346:24;:22;:24::i;:::-;12307:63;-1:-1:-1;12419:6:8;12395:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12395:38:8;;;;;;;;;;;;;;-1:-1:-1;12381:52:8;-1:-1:-1;12482:6:8;12458:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12458:38:8;;;;;;;;;;;;;;;12443:53;;12512:9;12507:464;12523:17;;;12507:464;;;12561:29;12593:6;;12600:1;12593:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;12561:41;;12617:52;12639:14;12655:6;;12663:5;12617:21;:52::i;:::-;12683:277;12722:14;12754;;12769:20;;12754:36;;;;;;;:::i;:::-;;;;;;;12808:14;;12823:5;:19;;;12808:35;;;;;;;:::i;:::-;;;;;;;12861:5;:20;;;12899:11;12911:1;12899:14;;;;;;;;:::i;:::-;;;;;;;12931:12;12944:1;12931:15;;;;;;;;:::i;:::-;;;;;;;12683:21;:277::i;:::-;-1:-1:-1;12542:3:8;;;:::i;:::-;;;12507:464;;;;12297:680;11987:990;;;;;;;;;:::o;5616:1435:19:-;5724:40;5807:9;:16;5767:66;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5767:66:19;;;;;;;;;;;;;;;5724:109;;5843:22;5885:9;5880:1006;5904:9;:16;5900:1;:20;5880:1006;;;5941:20;5964:9;5974:1;5964:12;;;;;;;;:::i;:::-;;;;;;;5941:35;;631:42;5995;;6003:8;:14;;;5995:42;;;5991:885;;6106:26;6086:8;:16;;;:46;6057:147;;;;-1:-1:-1;;;6057:147:19;;26243:2:124;6057:147:19;;;26225:21:124;26282:2;26262:18;;;26255:30;26321:32;26301:18;;;26294:60;26371:18;;6057:147:19;26041:354:124;6057:147:19;6230:16;;6257:15;;;;;6222:51;;:34;;;;;:51;;;;;6257:15;6230:16;6222:51;6230:16;6222:51;6257:15;6222:34;:51;;;;;;;;;;;;;;;;;;;;;5991:885;;;6318:23;6298:8;:16;;;:43;6294:582;;6389:16;;6407:15;;;;6361:14;;;;:62;;:27;;;;;;:62::i;:::-;6294:582;;;6462:37;6502:10;6534:16;;;;:::i;:::-;;;6502:66;;;;;;;;:::i;:::-;;;;;;;;;;;;6603:41;6586:58;;6680:14;;;;6662:32;;;;:15;;;:32;;;;6731:15;;;;;6712:16;;;:34;6791:4;6764:16;;;:32;6844:16;;6814:47;;;:19;;;;:47;-1:-1:-1;6294:582:19;-1:-1:-1;5922:3:19;;;;:::i;:::-;;;;5880:1006;;;-1:-1:-1;6900:18:19;;6896:149;;4491:22:25;;;6999:35:19;;;;;:23;;;;;;:35;;7023:10;;6999:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6896:149;5714:1337;;5616:1435;;:::o;9519:596:16:-;9636:19;;;3968:2;9710:29;;9702:59;;;;-1:-1:-1;;;9702:59:16;;27840:2:124;9702:59:16;;;27822:21:124;27879:2;27859:18;;;27852:30;27918:19;27898:18;;;27891:47;27955:18;;9702:59:16;27638:341:124;9702:59:16;-1:-1:-1;;9929:29:16;;;10022:2;10001:24;;9988:38;9984:2;9980:47;;10094:2;10073:24;10060:38;10055:3;10051:48;;-1:-1:-1;9519:596:16;-1:-1:-1;9519:596:16:o;4120:206:25:-;4300:8;4294:15;4287:4;4277:8;4273:19;4266:44;3568:192:22;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3722:31:22;;;3968:2:16;3722:31:22;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3701:18:22;;;:52;:18;3568:192::o;4170:696::-;4380:19;;4350:27;4433:44;4456:5;4463:6;;4380:19;4433:22;:44::i;:::-;4410:67;-1:-1:-1;4488:19:22;;4526:103;4558:5;4410:67;4604:15;;;;:5;:15;:::i;:::-;4526:18;:103::i;:::-;4487:142;;;;4640:118;4691:11;4716:5;4735;:13;;;4640:14;:18;;;:37;;:118;;;;;;:::i;:::-;4768:28;;;:20;;;:28;4832:27;:5;4791;4832:20;:27::i;:::-;4806:53;;:23;;;;:53;;;;-1:-1:-1;;;;;;;4170:696:22:o;1613:217:20:-;1669:6;1725:16;1708:5;:34;;1687:106;;;;-1:-1:-1;;;1687:106:20;;28771:2:124;1687:106:20;;;28753:21:124;28810:2;28790:18;;;28783:30;28849:27;28829:18;;;28822:55;28894:18;;1687:106:20;28569:349:124;1687:106:20;-1:-1:-1;1817:5:20;1613:217::o;1279:158::-;1335:7;1371:1;1362:5;:10;;1354:45;;;;-1:-1:-1;;;1354:45:20;;29125:2:124;1354:45:20;;;29107:21:124;29164:2;29144:18;;;29137:30;29203:24;29183:18;;;29176:52;29245:18;;1354:45:20;28923:346:124;18695:499:8;18843:9;18838:350;18854:20;;;18838:350;;;18895:23;;18921:9;;18931:1;18921:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18895:38;;;;18953:14;18971:32;:8;;:30;:32::i;:::-;18948:55;;;;19093:15;19083:7;:25;;;19075:61;;;;-1:-1:-1;;;19075:61:8;;29476:2:124;19075:61:8;;;29458:21:124;29515:2;29495:18;;;29488:30;29554:25;29534:18;;;29527:53;29597:18;;19075:61:8;29274:347:124;19075:61:8;19176:1;19151:12;19164:8;;19151:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;:26;-1:-1:-1;18876:3:8;;-1:-1:-1;18876:3:8;;-1:-1:-1;18876:3:8;:::i;:::-;;;18838:350;;539:1263:15;602:14;619:18;;;;:11;:18;:::i;:::-;602:35;-1:-1:-1;663:17:15;;;;690:23;647:13;716:20;;;;663:11;716:20;:::i;:::-;690:46;;;;1308:4;1302:11;1375:15;1358;1339:17;1326:65;1638:1;1615;1578:15;1539:17;1512:5;1484:6;1457:5;1431:226;1404:382;;1711:16;1708:1;1705;1690:38;1755:16;1752:1;1745:27;1404:382;;1263:533;;;;539:1263;:::o;2041:891::-;2123:13;2148:23;2123:13;2174:20;;;;:11;:20;:::i;:::-;2148:46;;-1:-1:-1;2148:46:15;-1:-1:-1;2227:1:15;2208:20;;2204:722;;2886:15;2873:29;2863:39;;2204:722;2138:794;;2041:891;;;:::o;13770:3745:8:-;14078:19;;14131:18;;;;14222:13;;;;14239:15;14222:32;;;;;;14214:64;;;;-1:-1:-1;;;14214:64:8;;29828:2:124;14214:64:8;;;29810:21:124;29867:2;29847:18;;;29840:30;29906:21;29886:18;;;29879:49;29945:18;;14214:64:8;29626:343:124;14214:64:8;15039:15;;;;:29;;15059:8;15039:19;:29::i;:::-;15004:16;;;;:31;;15025:9;15004:20;:31::i;:::-;:64;;14983:142;;;;-1:-1:-1;;;14983:142:8;;30176:2:124;14983:142:8;;;30158:21:124;30215:2;30195:18;;;30188:30;30254:33;30234:18;;;30227:61;30305:18;;14983:142:8;29974:355:124;14983:142:8;15136:26;15172:25;15207;15242:27;15298:19;15284:5;:10;;;:33;15280:1466;;15337:5;:23;;;15333:363;;;15401:14;15380:35;;15453:99;15518:5;:16;;;15453:39;15473:18;15453:5;:15;;;:19;;:39;;;;:::i;:::-;:43;;:99::i;:::-;15433:119;;15333:363;;;15612:5;:16;;;15591:37;;15666:5;:15;;;15646:35;;15333:363;15730:81;15789:8;15730:33;:18;15753:9;15730:22;:33::i;:::-;:41;;:81::i;:::-;15710:101;;15848:76;15892:18;15848:12;15861:8;15848:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:26;:76::i;:::-;15826:98;;15986:5;:16;;;15963:19;:39;;15938:116;;;;-1:-1:-1;;;15938:116:8;;21272:2:124;15938:116:8;;;21254:21:124;21311:2;21291:18;;;21284:30;21350:20;21330:18;;;21323:48;21388:18;;15938:116:8;21070:342:124;15938:116:8;15280:1466;;;16089:5;:23;;;16085:358;;;16152:14;16132:34;;16204:97;16268:5;:15;;;16204:38;16224:17;16204:5;:15;;;:19;;:38;;;;:::i;:97::-;16184:117;;16085:358;;;16360:5;:15;;;16340:35;;16413:5;:15;;;16393:35;;16085:358;16478:46;16514:9;16478:31;:17;16500:8;16478:21;:31::i;:46::-;16457:67;;16561:45;16588:17;16561:12;16574:8;16561:22;;;;;;:::i;:45::-;16539:67;;16668:5;:15;;;16645:19;:38;;16620:115;;;;-1:-1:-1;;;16620:115:8;;21272:2:124;16620:115:8;;;21254:21:124;21311:2;21291:18;;;21284:30;21350:20;21330:18;;;21323:48;21388:18;;16620:115:8;21070:342:124;16620:115:8;16777:41;:18;16800:17;16777:22;:41::i;:::-;16756:62;;16853:19;16828:12;16841:8;16828:22;;;;;;:::i;:::-;;;;;;;;;;;;;:44;;;;16907:14;:20;;;16888:222;;;16941:5;:15;;;16970:5;:14;;;16998:18;17030:17;17061;17092:8;16888:222;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;17142:20:8;;;;;17121:41;;;;;;17191:15;;17172:34;;:16;;;;:34;;;;17216:17;;;:38;;;;17285:22;;;;17264:18;;;;:43;17340:23;;;;17318:45;;;;17393:14;;;;17373:34;;;:17;;;:34;;;;17417:18;;;:38;;;;17487:21;;;17465:19;;:43;-1:-1:-1;;;;13770:3745:8:o;426:777:17:-;671:4;665:11;527:23;689:36;;;813:42;805:51;;785:1;762:25;;738:132;913:2;890:26;;883:41;;;527:23;508:16;;989:2;665:11;508:16;960:5;953;948:50;938:176;;1039:16;1036:1;1033;1018:38;1083:16;1080:1;1073:27;938:176;;1142:28;1164:5;1142:21;:28::i;:::-;1134:62;;;;-1:-1:-1;;;1134:62:17;;30536:2:124;1134:62:17;;;30518:21:124;30575:2;30555:18;;;30548:30;30614:23;30594:18;;;30587:51;30655:18;;1134:62:17;30334:345:124;1107:759:18;1258:32;1320:6;;1327:20;;1320:28;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1302:46;;;;1375:6;;1382:19;;;;1375:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1358:44;;:14;;;:44;1429:14;;;;;;;;:::i;:::-;1412:31;;:14;;;:31;1472:16;;;;;1453;;;:35;1516:15;;;;;1498;;;:33;1557:13;;;;;;;;:::i;:::-;1541:29;;:13;;;:29;1596:13;;;;;1580;;;:29;1637:15;;;;;1619;;;:33;1834:25;1847:11;;;;1834:12;:25::i;:::-;1773:21;;;1662:197;;;;1737:22;;;1662:197;;;;;;;1700:23;;;1662:197;1676:10;;;;1662:197;-1:-1:-1;1662:197:18;1107:759;-1:-1:-1;;;1107:759:18:o;5375:754:22:-;5401:14:16;;;5440:16;;5487:9;5469:28;;5545:3;5524:25;;5562:23;;6143:4;6137:11;6187:10;6161:37;;5604:15:22;6241:1:16;6218:25;;6211:50;6304:2;6281:26;;6274:46;;;;6377:2;6348:32;;-1:-1:-1;;5634:13:22;:30;;;;;;;;:::i;:::-;;5630:493;;5688:43;5708:11;5721:9;;5688:19;:43::i;:::-;5680:51;;5630:493;;;5769:14;5752:13;:31;;;;;;;;:::i;:::-;;5748:375;;5807:44;5828:11;5841:9;;5807:20;:44::i;5748:375::-;5889:14;5872:13;:31;;;;;;;;:::i;:::-;;5868:255;;5927:44;5948:11;5961:9;;5927:20;:44::i;5868:255::-;6057:55;6074:11;6087:9;;6098:5;:13;;;6057:16;:55::i;:::-;6049:63;;5868:255;5375:754;;;;;;;:::o;7036:1736:16:-;3968:2;7209:8;:15;:29;7201:67;;;;-1:-1:-1;;;7201:67:16;;31434:2:124;7201:67:16;;;31416:21:124;31473:2;31453:18;;;31446:30;31512:27;31492:18;;;31485:55;31557:18;;7201:67:16;31232:349:124;7201:67:16;8647:2;8633:17;;8626:34;8694:2;8680:17;;8673:32;8739:2;8725:17;;;8718:38;7036:1736::o;4248:280::-;4383:14;;;;4351:16;;4383:40;;4379:143;;-1:-1:-1;4450:5:16;4379:143;;;-1:-1:-1;;4497:14:16;;;;4248:280::o;2040:204:21:-;2098:7;2121:1;2126;2121:6;2117:20;;-1:-1:-1;2136:1:21;2129:8;;2117:20;2147:9;2159:5;2163:1;2159;:5;:::i;:::-;2147:17;-1:-1:-1;2191:1:21;2182:5;2186:1;2147:17;2182:5;:::i;:::-;:10;2174:45;;;;-1:-1:-1;;;2174:45:21;;32102:2:124;2174:45:21;;;32084:21:124;32141:2;32121:18;;;32114:30;32180:24;32160:18;;;32153:52;32222:18;;2174:45:21;31900:346:124;2174:45:21;2236:1;2040:204;-1:-1:-1;;;2040:204:21:o;2708:147::-;2766:7;2797:1;2793;:5;2785:41;;;;-1:-1:-1;;;2785:41:21;;32453:2:124;2785:41:21;;;32435:21:124;32492:2;32472:18;;;32465:30;32531:25;32511:18;;;32504:53;32574:18;;2785:41:21;32251:347:124;2785:41:21;2843:5;2847:1;2843;:5;:::i;3228:182::-;3290:7;3321:1;3317;:5;3309:49;;;;-1:-1:-1;;;3309:49:21;;32805:2:124;3309:49:21;;;32787:21:124;32844:2;32824:18;;;32817:30;32883:33;32863:18;;;32856:61;32934:18;;3309:49:21;32603:355:124;3309:49:21;3384:5;3388:1;3384;:5;:::i;:::-;:10;:18;;3401:1;3384:18;;;3397:1;3384:18;3375:28;;:5;3379:1;3375;:5;:::i;:::-;:28;;;;:::i;1192:175::-;1250:7;;1281:5;1285:1;1281;:5;:::i;:::-;1269:17;;1309:1;1304;:6;;1296:46;;;;-1:-1:-1;;;1296:46:21;;33412:2:124;1296:46:21;;;33394:21:124;33451:2;33431:18;;;33424:30;33490:29;33470:18;;;33463:57;33537:18;;1296:46:21;33210:351:124;2527:2892:17;2608:12;3776:253;;;-1:-1:-1;;;3845:4:17;3838:32;3900:4;3894;3887:18;3935:6;3929:4;3922:20;;3972:7;3966:4;3959:21;4010:4;4004;3997:18;3776:253;4050:16;4138:513;;;;4741:2;4736:558;;;;5333:56;5355:33;5351:2;5333:56;:::i;:::-;4043:1360;;4138:513;4514:5;4502:18;4492:115;;4544:45;4566:22;4562:2;4544:45;:::i;:::-;4636:1;4625:12;;4138:513;;4736:558;4783:16;4780:1;4777;4762:38;5276:1;5270:8;5263:16;5256:24;5245:35;;4043:1360;;2527:2892;;;:::o;4213:1216:18:-;4324:12;4350:22;4386:24;4424:23;4461:32;4522:5;4530:4;4522:12;4538:1;4522:17;4518:130;;4562:19;4555:26;;4518:130;;;4619:18;4612:25;;4518:130;4685:4;4677:12;;:17;;;-1:-1:-1;4716:4:18;4708:12;;4693:1;4708:17;4704:265;;4760:23;4741:42;;4704:265;;;4804:5;4812:4;4804:12;4820:1;4804:17;4800:169;;4856:26;4837:45;;4800:169;;;4932:26;4913:45;;4800:169;4982:5;4990:4;4982:12;4998:1;4982:17;4978:164;;5033:23;5015:41;;4978:164;;;5105:26;5087:44;;4978:164;5420:1;5411:5;:10;;5392:30;;;;;;;;:::i;:::-;5376:46;;4213:1216;;;;;;;:::o;8148:211:22:-;8276:13;8309:43;8322:11;8335:16;;8309:12;:43::i;:::-;8301:51;8148:211;-1:-1:-1;;;;8148:211:22:o;9005:564::-;9423:65;;33808:66:124;9423:65:22;;;33796:79:124;33891:12;;;33884:28;;;9134:13:22;;;;33928:12:124;;9423:65:22;;;;;;;;;;;;9400:98;;;;;;9376:122;;9517:45;9530:13;9545:16;;9517:12;:45::i;:::-;9509:53;9005:564;-1:-1:-1;;;;;9005:564:22:o;10268:864::-;10677:37;;10673:2;10669:46;10883:24;10397:13;10910:21;:16;10927:2;10910:16;10690:23;10910:21;:::i;:::-;10963:63;;11046:22;10963:63;;;10883:48;;-1:-1:-1;10883:48:22;;-1:-1:-1;10963:39:22;;;;353:10:11;;10963:63:22;;11003:11;;10883:48;;;;10963:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:105;;;10942:183;;;;-1:-1:-1;;;10942:183:22;;35150:2:124;10942:183:22;;;35132:21:124;35189:2;35169:18;;;35162:30;35228:33;35208:18;;;35201:61;35279:18;;10942:183:22;34948:355:124;10942:183:22;10412:720;;10268:864;;;;;:::o;11542:811::-;11691:13;11751:2;11724:29;;11716:70;;;;-1:-1:-1;;;11716:70:22;;35510:2:124;11716:70:22;;;35492:21:124;35549:2;35529:18;;;35522:30;35588;35568:18;;;35561:58;35636:18;;11716:70:22;35308:352:124;11716:70:22;-1:-1:-1;12130:31:22;;;3968:2:16;12130:31:22;;;12044:2;12130:31;;;;;;12048:37;;12040:46;;;;12106:21;;12130:31;;;;;;;;;;;-1:-1:-1;;12106:55:22;-1:-1:-1;12171:56:22;12106:55;12199:11;12212:5;12219:7;12171:27;:56::i;:::-;1434:39;1426:48;;12259:12;12272:8;12259:22;;;;;;:::i;:::-;;;;;;;;;;;;;;:36;12238:108;;;;-1:-1:-1;;;12238:108:22;;35867:2:124;12238:108:22;;;35849:21:124;35906:2;35886:18;;;35879:30;35945:27;35925:18;;;35918:55;35990:18;;12238:108:22;35665:349:124;12238:108:22;11706:647;11542:811;;;;;;:::o;6554:949::-;6671:14;4997:2;6718:49;;6697:127;;;;-1:-1:-1;;;6697:127:22;;36221:2:124;6697:127:22;;;36203:21:124;36260:2;36240:18;;;36233:30;36299:33;36279:18;;;36272:61;36350:18;;6697:127:22;36019:355:124;6697:127:22;7363:2;7397:27;;6835:9;7397:27;;7243:2;7397:27;;;;;;36606:25:124;;;7334:32:22;;;7321:46;7316:3;7312:56;36647:18:124;;;36640:45;;;7094:37:22;;36701:18:124;;;36694:34;;;7214:32:22;;;7201:46;36744:18:124;;;36737:34;;;7094:37:22;;7201:46;;7397:27;;36578:19:124;;7397:27:22;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7397:27:22;;;;;;-1:-1:-1;;7442:20:22;;;7434:62;;;;-1:-1:-1;;;7434:62:22;;36984:2:124;7434:62:22;;;36966:21:124;37023:2;37003:18;;;36996:30;37062:31;37042:18;;;37035:59;37111:18;;7434:62:22;36782:353:124;7434:62:22;6687:816;;;6554:949;;;;;:::o;14:375:124:-;85:8;95:6;149:3;142:4;134:6;130:17;126:27;116:55;;167:1;164;157:12;116:55;-1:-1:-1;190:20:124;;233:18;222:30;;219:50;;;265:1;262;255:12;219:50;302:4;294:6;290:17;278:29;;362:3;355:4;345:6;342:1;338:14;330:6;326:27;322:38;319:47;316:67;;;379:1;376;369:12;316:67;14:375;;;;;:::o;394:1464::-;676:6;684;692;700;708;716;724;777:3;765:9;756:7;752:23;748:33;745:53;;;794:1;791;784:12;745:53;834:9;821:23;863:18;904:2;896:6;893:14;890:34;;;920:1;917;910:12;890:34;959:78;1029:7;1020:6;1009:9;1005:22;959:78;:::i;:::-;1056:8;;-1:-1:-1;933:104:124;-1:-1:-1;1144:2:124;1129:18;;1116:32;;-1:-1:-1;1160:16:124;;;1157:36;;;1189:1;1186;1179:12;1157:36;1228:80;1300:7;1289:8;1278:9;1274:24;1228:80;:::i;:::-;1327:8;;-1:-1:-1;1202:106:124;-1:-1:-1;1415:2:124;1400:18;;1387:32;;-1:-1:-1;1431:16:124;;;1428:36;;;1460:1;1457;1450:12;1428:36;1499:80;1571:7;1560:8;1549:9;1545:24;1499:80;:::i;:::-;1598:8;;-1:-1:-1;1473:106:124;-1:-1:-1;1686:2:124;1671:18;;1658:32;;-1:-1:-1;1702:16:124;;;1699:36;;;1731:1;1728;1721:12;1699:36;-1:-1:-1;1754:24:124;;1801:2;1793:11;;1790:24;-1:-1:-1;1787:44:124;;;1827:1;1824;1817:12;1787:44;1850:2;1840:12;;;394:1464;;;;;;;;;;:::o;1863:347::-;1914:8;1924:6;1978:3;1971:4;1963:6;1959:17;1955:27;1945:55;;1996:1;1993;1986:12;1945:55;-1:-1:-1;2019:20:124;;2062:18;2051:30;;2048:50;;;2094:1;2091;2084:12;2048:50;2131:4;2123:6;2119:17;2107:29;;2183:3;2176:4;2167:6;2159;2155:19;2151:30;2148:39;2145:59;;;2200:1;2197;2190:12;2215:409;2285:6;2293;2346:2;2334:9;2325:7;2321:23;2317:32;2314:52;;;2362:1;2359;2352:12;2314:52;2402:9;2389:23;2435:18;2427:6;2424:30;2421:50;;;2467:1;2464;2457:12;2421:50;2506:58;2556:7;2547:6;2536:9;2532:22;2506:58;:::i;:::-;2583:8;;2480:84;;-1:-1:-1;2215:409:124;-1:-1:-1;;;;2215:409:124:o;2887:184::-;2939:77;2936:1;2929:88;3036:4;3033:1;3026:15;3060:4;3057:1;3050:15;3076:334;3147:2;3141:9;3203:2;3193:13;;3208:66;3189:86;3177:99;;3306:18;3291:34;;3327:22;;;3288:62;3285:88;;;3353:18;;:::i;:::-;3389:2;3382:22;3076:334;;-1:-1:-1;3076:334:124:o;3415:589::-;3457:5;3510:3;3503:4;3495:6;3491:17;3487:27;3477:55;;3528:1;3525;3518:12;3477:55;3564:6;3551:20;3590:18;3586:2;3583:26;3580:52;;;3612:18;;:::i;:::-;3656:114;3764:4;3695:66;3688:4;3684:2;3680:13;3676:86;3672:97;3656:114;:::i;:::-;3795:2;3786:7;3779:19;3841:3;3834:4;3829:2;3821:6;3817:15;3813:26;3810:35;3807:55;;;3858:1;3855;3848:12;3807:55;3923:2;3916:4;3908:6;3904:17;3897:4;3888:7;3884:18;3871:55;3971:1;3946:16;;;3964:4;3942:27;3935:38;;;;3950:7;3415:589;-1:-1:-1;;;3415:589:124:o;4009:320::-;4077:6;4130:2;4118:9;4109:7;4105:23;4101:32;4098:52;;;4146:1;4143;4136:12;4098:52;4186:9;4173:23;4219:18;4211:6;4208:30;4205:50;;;4251:1;4248;4241:12;4205:50;4274:49;4315:7;4306:6;4295:9;4291:22;4274:49;:::i;4516:154::-;4602:42;4595:5;4591:54;4584:5;4581:65;4571:93;;4660:1;4657;4650:12;4571:93;4516:154;:::o;4675:455::-;4752:6;4760;4813:2;4801:9;4792:7;4788:23;4784:32;4781:52;;;4829:1;4826;4819:12;4781:52;4868:9;4855:23;4887:31;4912:5;4887:31;:::i;:::-;4937:5;-1:-1:-1;4993:2:124;4978:18;;4965:32;5020:18;5009:30;;5006:50;;;5052:1;5049;5042:12;5006:50;5075:49;5116:7;5107:6;5096:9;5092:22;5075:49;:::i;:::-;5065:59;;;4675:455;;;;;:::o;5135:250::-;5220:1;5230:113;5244:6;5241:1;5238:13;5230:113;;;5320:11;;;5314:18;5301:11;;;5294:39;5266:2;5259:10;5230:113;;;-1:-1:-1;;5377:1:124;5359:16;;5352:27;5135:250::o;5390:329::-;5431:3;5469:5;5463:12;5496:6;5491:3;5484:19;5512:76;5581:6;5574:4;5569:3;5565:14;5558:4;5551:5;5547:16;5512:76;:::i;:::-;5633:2;5621:15;5638:66;5617:88;5608:98;;;;5708:4;5604:109;;5390:329;-1:-1:-1;;5390:329:124:o;5724:217::-;5871:2;5860:9;5853:21;5834:4;5891:44;5931:2;5920:9;5916:18;5908:6;5891:44;:::i;5946:248::-;6014:6;6022;6075:2;6063:9;6054:7;6050:23;6046:32;6043:52;;;6091:1;6088;6081:12;6043:52;-1:-1:-1;;6114:23:124;;;6184:2;6169:18;;;6156:32;;-1:-1:-1;5946:248:124:o;6199:1099::-;6402:6;6410;6418;6426;6434;6487:2;6475:9;6466:7;6462:23;6458:32;6455:52;;;6503:1;6500;6493:12;6455:52;6543:9;6530:23;6572:18;6613:2;6605:6;6602:14;6599:34;;;6629:1;6626;6619:12;6599:34;6668:78;6738:7;6729:6;6718:9;6714:22;6668:78;:::i;:::-;6765:8;;-1:-1:-1;6642:104:124;-1:-1:-1;6853:2:124;6838:18;;6825:32;;-1:-1:-1;6869:16:124;;;6866:36;;;6898:1;6895;6888:12;6866:36;6937:80;7009:7;6998:8;6987:9;6983:24;6937:80;:::i;:::-;7036:8;;-1:-1:-1;6911:106:124;-1:-1:-1;7124:2:124;7109:18;;7096:32;;-1:-1:-1;7140:16:124;;;7137:36;;;7169:1;7166;7159:12;7137:36;-1:-1:-1;7192:24:124;;7250:3;7232:16;;;7228:26;7225:46;;;7267:1;7264;7257:12;7225:46;7290:2;7280:12;;;6199:1099;;;;;;;;:::o;7559:456::-;7656:6;7664;7717:2;7705:9;7696:7;7692:23;7688:32;7685:52;;;7733:1;7730;7723:12;7685:52;7773:9;7760:23;7806:18;7798:6;7795:30;7792:50;;;7838:1;7835;7828:12;7792:50;7877:78;7947:7;7938:6;7927:9;7923:22;7877:78;:::i;8020:118::-;8106:5;8099:13;8092:21;8085:5;8082:32;8072:60;;8128:1;8125;8118:12;8143:538;8219:6;8227;8235;8288:2;8276:9;8267:7;8263:23;8259:32;8256:52;;;8304:1;8301;8294:12;8256:52;8344:9;8331:23;8377:18;8369:6;8366:30;8363:50;;;8409:1;8406;8399:12;8363:50;8448:58;8498:7;8489:6;8478:9;8474:22;8448:58;:::i;:::-;8525:8;;-1:-1:-1;8422:84:124;-1:-1:-1;;8610:2:124;8595:18;;8582:32;8623:28;8582:32;8623:28;:::i;:::-;8670:5;8660:15;;;8143:538;;;;;:::o;9705:245::-;9772:6;9825:2;9813:9;9804:7;9800:23;9796:32;9793:52;;;9841:1;9838;9831:12;9793:52;9873:9;9867:16;9892:28;9914:5;9892:28;:::i;10302:184::-;10354:77;10351:1;10344:88;10451:4;10448:1;10441:15;10475:4;10472:1;10465:15;10491:628;10608:4;10614:6;10674:11;10661:25;10764:66;10753:8;10737:14;10733:29;10729:102;10709:18;10705:127;10695:155;;10846:1;10843;10836:12;10695:155;10873:33;;10925:20;;;-1:-1:-1;10968:18:124;10957:30;;10954:50;;;11000:1;10997;10990:12;10954:50;11033:4;11021:17;;-1:-1:-1;11084:1:124;11080:14;;;11064;11060:35;11050:46;;11047:66;;;11109:1;11106;11099:12;11465:694;11680:2;11732:21;;;11802:13;;11705:18;;;11824:22;;;11651:4;;11680:2;11903:15;;;;11877:2;11862:18;;;11651:4;11946:187;11960:6;11957:1;11954:13;11946:187;;;12009:42;12047:3;12038:6;12032:13;11192:42;11273:2;11265:5;11259:12;11255:21;11250:3;11243:34;11338:2;11330:4;11323:5;11319:16;11313:23;11309:32;11302:4;11297:3;11293:14;11286:56;;11391:4;11384:5;11380:16;11374:23;11367:4;11362:3;11358:14;11351:47;11447:4;11440:5;11436:16;11430:23;11423:4;11418:3;11414:14;11407:47;11124:336;;;12009:42;12108:15;;;;12080:4;12071:14;;;;;11982:1;11975:9;11946:187;;;-1:-1:-1;12150:3:124;;11465:694;-1:-1:-1;;;;;;11465:694:124:o;12524:271::-;12707:6;12699;12694:3;12681:33;12663:3;12733:16;;12758:13;;;12733:16;12524:271;-1:-1:-1;12524:271:124:o;12800:325::-;12888:6;12883:3;12876:19;12940:6;12933:5;12926:4;12921:3;12917:14;12904:43;;12992:1;12985:4;12976:6;12971:3;12967:16;12963:27;12956:38;12858:3;13114:4;13044:66;13039:2;13031:6;13027:15;13023:88;13018:3;13014:98;13010:109;13003:116;;12800:325;;;;:::o;13130:244::-;13287:2;13276:9;13269:21;13250:4;13307:61;13364:2;13353:9;13349:18;13341:6;13333;13307:61;:::i;13379:287::-;13508:3;13546:6;13540:13;13562:66;13621:6;13616:3;13609:4;13601:6;13597:17;13562:66;:::i;:::-;13644:16;;;;;13379:287;-1:-1:-1;;13379:287:124:o;13671:400::-;13822:3;13860:6;13854:13;13876:66;13935:6;13930:3;13923:4;13915:6;13911:17;13876:66;:::i;:::-;14019:14;;14012:22;14007:3;14003:32;13964:16;;;;13989:47;;;14063:1;14052:13;;13671:400;-1:-1:-1;;13671:400:124:o;14076:184::-;14128:77;14125:1;14118:88;14225:4;14222:1;14215:15;14249:4;14246:1;14239:15;14265:168;14338:9;;;14369;;14386:15;;;14380:22;;14366:37;14356:71;;14407:18;;:::i;14438:195::-;14477:3;14508:66;14501:5;14498:77;14495:103;;14578:18;;:::i;:::-;-1:-1:-1;14625:1:124;14614:13;;14438:195::o;14986:191::-;15021:3;15052:66;15045:5;15042:77;15039:103;;15122:18;;:::i;:::-;-1:-1:-1;15162:1:124;15158:13;;14986:191::o;15531:184::-;15583:77;15580:1;15573:88;15680:4;15677:1;15670:15;15704:4;15701:1;15694:15;15720:553;15828:6;15823:3;15816:19;15798:3;15854:4;15883:2;15878:3;15874:12;15867:19;;15909:5;15932:1;15942:306;15956:6;15953:1;15950:13;15942:306;;;16033:6;16020:20;16053:33;16078:7;16053:33;:::i;:::-;16124:42;16111:56;16099:69;;16188:12;;;;16223:15;;;;15978:1;15971:9;15942:306;;;-1:-1:-1;16264:3:124;;15720:553;-1:-1:-1;;;;;15720:553:124:o;16661:434::-;16713:3;16751:5;16745:12;16778:6;16773:3;16766:19;16804:4;16833:2;16828:3;16824:12;16817:19;;16870:2;16863:5;16859:14;16891:1;16901:169;16915:6;16912:1;16909:13;16901:169;;;16976:13;;16964:26;;17010:12;;;;17045:15;;;;16937:1;16930:9;16901:169;;17199:2926;17824:4;17872:3;17861:9;17857:19;17906:1;17898:6;17895:13;17885:47;;17912:18;;:::i;:::-;17941:25;;;18002:3;17997:2;17982:18;;17975:31;18041:22;;;18094:3;18144:1;18140:14;;;18125:30;;18121:40;;;18079:19;;18184:6;-1:-1:-1;18218:1442:124;18232:6;18229:1;18226:13;18218:1442;;;18321:66;18309:9;18301:6;18297:22;18293:95;18288:3;18281:108;18441:6;18428:20;18528:66;18519:6;18503:14;18499:27;18495:100;18475:18;18471:125;18461:153;;18610:1;18607;18600:12;18461:153;18664:6;18644:18;18640:31;18627:44;;18712:5;18699:19;18691:6;18684:35;18780:2;18773:5;18769:14;18756:28;18751:2;18743:6;18739:15;18732:53;18848:4;18841:5;18837:16;18824:30;18817:4;18809:6;18805:17;18798:57;18918:4;18911:5;18907:16;18894:30;18887:4;18879:6;18875:17;18868:57;18990:4;18983:5;18979:16;18966:30;19077:66;19069:5;19053:14;19049:26;19045:99;19023:20;19019:126;19009:154;;19159:1;19156;19149:12;19009:154;19191:32;19312:2;19299:16;;;19250:21;19342:18;19331:30;;19328:50;;;19374:1;19371;19364:12;19328:50;19427:6;19411:14;19407:27;19398:7;19394:41;19391:61;;;19448:1;19445;19438:12;19391:61;19491:4;19484;19476:6;19472:17;19465:31;19519:61;19574:4;19566:6;19562:17;19554:6;19545:7;19519:61;:::i;:::-;19509:71;-1:-1:-1;;;19615:2:124;19638:12;;;;19603:15;;;;;18254:1;18247:9;18218:1442;;;18222:3;;;19710:9;19702:6;19698:22;19691:4;19680:9;19676:20;19669:52;19744:69;19806:6;19798;19790;19744:69;:::i;:::-;19730:83;;19822:62;19878:4;19867:9;19863:20;19855:6;16356:42;16437:2;16429:5;16423:12;16419:21;16414:3;16407:34;16504:4;16497:5;16493:16;16487:23;16480:31;16473:39;16466:4;16461:3;16457:14;16450:63;16574:2;16566:4;16559:5;16555:16;16549:23;16545:32;16538:4;16533:3;16529:14;16522:56;;16641:4;16634:5;16630:16;16624:23;16617:31;16610:39;16603:4;16598:3;16594:14;16587:63;16278:378;;;19822:62;19933:9;19925:6;19921:22;19915:3;19904:9;19900:19;19893:51;19961:43;19997:6;19989;19961:43;:::i;:::-;19953:51;;;20013:46;20054:3;20043:9;20039:19;20031:6;17176:10;17165:22;17153:35;;17100:94;20013:46;11259:12;;11192:42;11255:21;;;20114:3;20099:19;;11243:34;11330:4;11319:16;;11313:23;11309:32;11293:14;;;11286:56;11391:4;11380:16;;11374:23;11358:14;;;11351:47;11447:4;11436:16;;11430:23;11414:14;;;11407:47;17199:2926;;;;;;;;;;;;:::o;20130:935::-;20224:6;20255:2;20298;20286:9;20277:7;20273:23;20269:32;20266:52;;;20314:1;20311;20304:12;20266:52;20347:9;20341:16;20376:18;20417:2;20409:6;20406:14;20403:34;;;20433:1;20430;20423:12;20403:34;20471:6;20460:9;20456:22;20446:32;;20516:7;20509:4;20505:2;20501:13;20497:27;20487:55;;20538:1;20535;20528:12;20487:55;20567:2;20561:9;20589:2;20585;20582:10;20579:36;;;20595:18;;:::i;:::-;20641:2;20638:1;20634:10;20624:20;;20664:28;20688:2;20684;20680:11;20664:28;:::i;:::-;20726:15;;;20796:11;;;20792:20;;;20757:12;;;;20824:19;;;20821:39;;;20856:1;20853;20846:12;20821:39;20880:11;;;;20900:135;20916:6;20911:3;20908:15;20900:135;;;20982:10;;20970:23;;20933:12;;;;21013;;;;20900:135;;;21054:5;20130:935;-1:-1:-1;;;;;;;;20130:935:124:o;22136:685::-;22416:4;22445:42;22526:2;22518:6;22514:15;22503:9;22496:34;22578:2;22570:6;22566:15;22561:2;22550:9;22546:18;22539:43;;22618:6;22613:2;22602:9;22598:18;22591:34;22661:6;22656:2;22645:9;22641:18;22634:34;22705:6;22699:3;22688:9;22684:19;22677:35;22749:3;22743;22732:9;22728:19;22721:32;22770:45;22810:3;22799:9;22795:19;22787:6;22770:45;:::i;23534:325::-;23713:2;23702:9;23695:21;23676:4;23733:61;23790:2;23779:9;23775:18;23767:6;23759;23733:61;:::i;:::-;23725:69;;23844:6;23837:14;23830:22;23825:2;23814:9;23810:18;23803:50;23534:325;;;;;;:::o;23864:337::-;24051:42;24043:6;24039:55;24028:9;24021:74;24131:2;24126;24115:9;24111:18;24104:30;24002:4;24151:44;24191:2;24180:9;24176:18;24168:6;24151:44;:::i;24206:128::-;24273:9;;;24294:11;;;24291:37;;;24308:18;;:::i;24339:380::-;24429:4;24487:11;24474:25;24577:66;24566:8;24550:14;24546:29;24542:102;24522:18;24518:127;24508:155;;24659:1;24656;24649:12;24724:247;24783:6;24836:2;24824:9;24815:7;24811:23;24807:32;24804:52;;;24852:1;24849;24842:12;24804:52;24891:9;24878:23;24910:31;24935:5;24910:31;:::i;25656:380::-;25746:4;25804:11;25791:25;25894:66;25883:8;25867:14;25863:29;25859:102;25839:18;25835:127;25825:155;;25976:1;25973;25966:12;26400:1233;26633:2;26685:21;;;26755:13;;26658:18;;;26777:22;;;26604:4;;26633:2;26818;;26836:18;;;;26877:15;;;26604:4;26920:687;26934:6;26931:1;26928:13;26920:687;;;26999:6;26993:13;27035:2;27029:9;27068:1;27064:2;27061:9;27051:43;;27074:18;;:::i;:::-;27107:15;;27161:11;;;27155:18;27196:42;27272:21;;;27258:12;;;27251:43;27334:11;;;27328:18;27314:12;;;27307:40;27370:4;27418:11;;;27412:18;27408:27;;27394:12;;;27387:49;27459:4;27507:11;;;27501:18;27497:27;27483:12;;;27476:49;27554:4;27545:14;;;;27582:15;;;;26956:1;26949:9;26920:687;;;-1:-1:-1;27624:3:124;;26400:1233;-1:-1:-1;;;;;;;26400:1233:124:o;27984:580::-;28061:4;28067:6;28127:11;28114:25;28217:66;28206:8;28190:14;28186:29;28182:102;28162:18;28158:127;28148:155;;28299:1;28296;28289:12;28148:155;28326:33;;28378:20;;;-1:-1:-1;28421:18:124;28410:30;;28407:50;;;28453:1;28450;28443:12;28407:50;28486:4;28474:17;;-1:-1:-1;28517:14:124;28513:27;;;28503:38;;28500:58;;;28554:1;28551;28544:12;30951:276;31009:6;31062:2;31050:9;31041:7;31037:23;31033:32;31030:52;;;31078:1;31075;31068:12;31030:52;31117:9;31104:23;31167:10;31160:5;31156:22;31149:5;31146:33;31136:61;;31193:1;31190;31183:12;31586:184;31638:77;31635:1;31628:88;31735:4;31732:1;31725:15;31759:4;31756:1;31749:15;31775:120;31815:1;31841;31831:35;;31846:18;;:::i;:::-;-1:-1:-1;31880:9:124;;31775:120::o;32963:112::-;32995:1;33021;33011:35;;33026:18;;:::i;:::-;-1:-1:-1;33060:9:124;;32963:112::o;33080:125::-;33145:9;;;33166:10;;;33163:36;;;33179:18;;:::i;33951:331::-;34056:9;34067;34109:8;34097:10;34094:24;34091:44;;;34131:1;34128;34121:12;34091:44;34160:6;34150:8;34147:20;34144:40;;;34180:1;34177;34170:12;34144:40;-1:-1:-1;;34206:23:124;;;34251:25;;;;;-1:-1:-1;33951:331:124:o;34287:315::-;34472:6;34461:9;34454:25;34515:2;34510;34499:9;34495:18;34488:30;34435:4;34535:61;34592:2;34581:9;34577:18;34569:6;34561;34535:61;:::i;34607:336::-;34676:6;34729:2;34717:9;34708:7;34704:23;34700:32;34697:52;;;34745:1;34742;34735:12;34697:52;34777:9;34771:16;34827:66;34820:5;34816:78;34809:5;34806:89;34796:117;;34909:1;34906;34899:12","linkReferences":{},"immutableReferences":{"2993":[{"start":332,"length":32},{"start":1065,"length":32},{"start":2340,"length":32}],"2997":[{"start":893,"length":32},{"start":1531,"length":32}],"3001":[{"start":605,"length":32},{"start":1380,"length":32},{"start":3440,"length":32},{"start":5287,"length":32}],"5679":[{"start":809,"length":32},{"start":9458,"length":32}]}},"methodIdentifiers":{"authenticator()":"2335c76b","domainSeparator()":"f698da25","filledAmount(bytes)":"2479fb6e","freeFilledAmountStorage(bytes[])":"ed9f35ce","freePreSignatureStorage(bytes[])":"a2a7d51b","getStorageAt(uint256,uint256)":"5624b25b","invalidateOrder(bytes)":"15337bc0","preSignature(bytes)":"d08d33d1","setPreSignature(bytes,bool)":"ec6cb13f","settle(address[],uint256[],(uint256,uint256,address,uint256,uint256,uint32,bytes32,uint256,uint256,uint256,bytes)[],(address,uint256,bytes)[][3])":"13d79a0b","simulateDelegatecall(address,bytes)":"f84436bd","simulateDelegatecallInternal(address,bytes)":"43218e19","swap((bytes32,uint256,uint256,uint256,bytes)[],address[],(uint256,uint256,address,uint256,uint256,uint32,bytes32,uint256,uint256,uint256,bytes))":"845a101f","vault()":"fbfa77cf","vaultRelayer()":"9b552cc2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract GPv2Authentication\",\"name\":\"authenticator_\",\"type\":\"address\"},{\"internalType\":\"contract IVault\",\"name\":\"vault_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"Interaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"orderUid\",\"type\":\"bytes\"}],\"name\":\"OrderInvalidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"orderUid\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"signed\",\"type\":\"bool\"}],\"name\":\"PreSignature\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"solver\",\"type\":\"address\"}],\"name\":\"Settlement\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"sellToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"buyToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"orderUid\",\"type\":\"bytes\"}],\"name\":\"Trade\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"authenticator\",\"outputs\":[{\"internalType\":\"contract GPv2Authentication\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"filledAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"orderUids\",\"type\":\"bytes[]\"}],\"name\":\"freeFilledAmountStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"orderUids\",\"type\":\"bytes[]\"}],\"name\":\"freePreSignatureStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"orderUid\",\"type\":\"bytes\"}],\"name\":\"invalidateOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"preSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"orderUid\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"signed\",\"type\":\"bool\"}],\"name\":\"setPreSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"clearingPrices\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"sellTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flags\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct GPv2Trade.Data[]\",\"name\":\"trades\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct GPv2Interaction.Data[][3]\",\"name\":\"interactions\",\"type\":\"tuple[][3]\"}],\"name\":\"settle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecallInternal\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"sellTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sellAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"buyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"validTo\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"appData\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flags\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct GPv2Trade.Data\",\"name\":\"trade\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultRelayer\",\"outputs\":[{\"internalType\":\"contract GPv2VaultRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Gnosis Developers\",\"events\":{\"Interaction(address,uint256,bytes4)\":{\"details\":\"Event emitted for each executed interaction. For gas efficiency, only the interaction calldata selector (first 4 bytes) is included in the event. For interactions without calldata or whose calldata is shorter than 4 bytes, the selector will be `0`.\"},\"OrderInvalidated(address,bytes)\":{\"details\":\"Event emitted when an order is invalidated.\"},\"PreSignature(address,bytes,bool)\":{\"details\":\"Event that is emitted when an account either pre-signs an order or revokes an existing pre-signature.\"},\"Settlement(address)\":{\"details\":\"Event emitted when a settlement completes\"},\"Trade(address,address,address,uint256,uint256,uint256,bytes)\":{\"details\":\"Event emitted for each executed trade.\"}},\"kind\":\"dev\",\"methods\":{\"freeFilledAmountStorage(bytes[])\":{\"details\":\"Free storage from the filled amounts of **expired** orders to claim a gas refund. This method can only be called as an interaction.\",\"params\":{\"orderUids\":\"The unique identifiers of the expired order to free storage for.\"}},\"freePreSignatureStorage(bytes[])\":{\"details\":\"Free storage from the pre signatures of **expired** orders to claim a gas refund. This method can only be called as an interaction.\",\"params\":{\"orderUids\":\"The unique identifiers of the expired order to free storage for.\"}},\"getStorageAt(uint256,uint256)\":{\"details\":\"Reads `length` bytes of storage in the currents contract\",\"params\":{\"length\":\"- the number of words (32 bytes) of data to read\",\"offset\":\"- the offset in the current contract's storage in words to start reading from\"},\"returns\":{\"_0\":\"the bytes that were read.\"}},\"invalidateOrder(bytes)\":{\"details\":\"Invalidate onchain an order that has been signed offline.\",\"params\":{\"orderUid\":\"The unique identifier of the order that is to be made invalid after calling this function. The user that created the order must be the sender of this message. See [`extractOrderUidParams`] for details on orderUid.\"}},\"setPreSignature(bytes,bool)\":{\"details\":\"Sets a presignature for the specified order UID.\",\"params\":{\"orderUid\":\"The unique identifier of the order to pre-sign.\",\"signed\":\"True to set the order as tradable with pre-sign, false to false to unset it.\"}},\"settle(address[],uint256[],(uint256,uint256,address,uint256,uint256,uint32,bytes32,uint256,uint256,uint256,bytes)[],(address,uint256,bytes)[][3])\":{\"details\":\"Settle the specified orders at a clearing price. Note that it is the responsibility of the caller to ensure that all GPv2 invariants are upheld for the input settlement, otherwise this call will revert. Namely: - All orders are valid and signed - Accounts have sufficient balance and approval. - Settlement contract has sufficient balance to execute trades. Note this implies that the accumulated fees held in the contract can also be used for settlement. This is OK since: - Solvers need to be authorized - Misbehaving solvers will be slashed for abusing accumulated fees for settlement - Critically, user orders are entirely protected\",\"params\":{\"clearingPrices\":\"An array of clearing prices where the `i`-th price is for the `i`-th token in the [`tokens`] array.\",\"interactions\":\"Smart contract interactions split into three separate lists to be run before the settlement, during the settlement and after the settlement respectively.\",\"tokens\":\"An array of ERC20 tokens to be traded in the settlement. Trades encode tokens as indices into this array.\",\"trades\":\"Trades for signed orders.\"}},\"simulateDelegatecall(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}},\"simulateDelegatecallInternal(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Returns encoded result as revert message concatenated with the success flag of the inner call as a last byte.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}},\"swap((bytes32,uint256,uint256,uint256,bytes)[],address[],(uint256,uint256,address,uint256,uint256,uint32,bytes32,uint256,uint256,uint256,bytes))\":{\"details\":\"Settle an order directly against Balancer V2 pools.\",\"params\":{\"swaps\":\"The Balancer V2 swap steps to use for trading.\",\"tokens\":\"An array of ERC20 tokens to be traded in the settlement. Swaps and the trade encode tokens as indices into this array.\",\"trade\":\"The trade to match directly against Balancer liquidity. The order will always be fully executed, so the trade's `executedAmount` field is used to represent a swap limit amount.\"}}},\"stateVariables\":{\"authenticator\":{\"details\":\"The authenticator is used to determine who can call the settle function. That is, only authorized solvers have the ability to invoke settlements. Any valid authenticator implements an isSolver method called by the onlySolver modifier below.\"},\"filledAmount\":{\"details\":\"Map each user order by UID to the amount that has been filled so far. If this amount is larger than or equal to the amount traded in the order (amount sold for sell orders, amount bought for buy orders) then the order cannot be traded anymore. If the order is fill or kill, then this value is only used to determine whether the order has already been executed.\"},\"vault\":{\"details\":\"The Balancer Vault the protocol used for managing user funds.\"},\"vaultRelayer\":{\"details\":\"The Balancer Vault relayer which can interact on behalf of users. This contract is created during deployment\"}},\"title\":\"Gnosis Protocol v2 Settlement Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":\"GPv2Settlement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract GPv2Authentication","name":"authenticator_","type":"address"},{"internalType":"contract IVault","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false}],"type":"event","name":"Interaction","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes","name":"orderUid","type":"bytes","indexed":false}],"type":"event","name":"OrderInvalidated","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes","name":"orderUid","type":"bytes","indexed":false},{"internalType":"bool","name":"signed","type":"bool","indexed":false}],"type":"event","name":"PreSignature","anonymous":false},{"inputs":[{"internalType":"address","name":"solver","type":"address","indexed":true}],"type":"event","name":"Settlement","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"contract IERC20","name":"sellToken","type":"address","indexed":false},{"internalType":"contract IERC20","name":"buyToken","type":"address","indexed":false},{"internalType":"uint256","name":"sellAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"buyAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"feeAmount","type":"uint256","indexed":false},{"internalType":"bytes","name":"orderUid","type":"bytes","indexed":false}],"type":"event","name":"Trade","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"authenticator","outputs":[{"internalType":"contract GPv2Authentication","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"filledAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes[]","name":"orderUids","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"freeFilledAmountStorage"},{"inputs":[{"internalType":"bytes[]","name":"orderUids","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"freePreSignatureStorage"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStorageAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"orderUid","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"invalidateOrder"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"preSignature","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"orderUid","type":"bytes"},{"internalType":"bool","name":"signed","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPreSignature"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"clearingPrices","type":"uint256[]"},{"internalType":"struct GPv2Trade.Data[]","name":"trades","type":"tuple[]","components":[{"internalType":"uint256","name":"sellTokenIndex","type":"uint256"},{"internalType":"uint256","name":"buyTokenIndex","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"uint256","name":"flags","type":"uint256"},{"internalType":"uint256","name":"executedAmount","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"struct GPv2Interaction.Data[][3]","name":"interactions","type":"tuple[][3]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"settle"},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateDelegatecall","outputs":[{"internalType":"bytes","name":"response","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateDelegatecallInternal","outputs":[{"internalType":"bytes","name":"response","type":"bytes"}]},{"inputs":[{"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]","components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"struct GPv2Trade.Data","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"sellTokenIndex","type":"uint256"},{"internalType":"uint256","name":"buyTokenIndex","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"uint256","name":"flags","type":"uint256"},{"internalType":"uint256","name":"executedAmount","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"swap"},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vaultRelayer","outputs":[{"internalType":"contract GPv2VaultRelayer","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"freeFilledAmountStorage(bytes[])":{"details":"Free storage from the filled amounts of **expired** orders to claim a gas refund. This method can only be called as an interaction.","params":{"orderUids":"The unique identifiers of the expired order to free storage for."}},"freePreSignatureStorage(bytes[])":{"details":"Free storage from the pre signatures of **expired** orders to claim a gas refund. This method can only be called as an interaction.","params":{"orderUids":"The unique identifiers of the expired order to free storage for."}},"getStorageAt(uint256,uint256)":{"details":"Reads `length` bytes of storage in the currents contract","params":{"length":"- the number of words (32 bytes) of data to read","offset":"- the offset in the current contract's storage in words to start reading from"},"returns":{"_0":"the bytes that were read."}},"invalidateOrder(bytes)":{"details":"Invalidate onchain an order that has been signed offline.","params":{"orderUid":"The unique identifier of the order that is to be made invalid after calling this function. The user that created the order must be the sender of this message. See [`extractOrderUidParams`] for details on orderUid."}},"setPreSignature(bytes,bool)":{"details":"Sets a presignature for the specified order UID.","params":{"orderUid":"The unique identifier of the order to pre-sign.","signed":"True to set the order as tradable with pre-sign, false to false to unset it."}},"settle(address[],uint256[],(uint256,uint256,address,uint256,uint256,uint32,bytes32,uint256,uint256,uint256,bytes)[],(address,uint256,bytes)[][3])":{"details":"Settle the specified orders at a clearing price. Note that it is the responsibility of the caller to ensure that all GPv2 invariants are upheld for the input settlement, otherwise this call will revert. Namely: - All orders are valid and signed - Accounts have sufficient balance and approval. - Settlement contract has sufficient balance to execute trades. Note this implies that the accumulated fees held in the contract can also be used for settlement. This is OK since: - Solvers need to be authorized - Misbehaving solvers will be slashed for abusing accumulated fees for settlement - Critically, user orders are entirely protected","params":{"clearingPrices":"An array of clearing prices where the `i`-th price is for the `i`-th token in the [`tokens`] array.","interactions":"Smart contract interactions split into three separate lists to be run before the settlement, during the settlement and after the settlement respectively.","tokens":"An array of ERC20 tokens to be traded in the settlement. Trades encode tokens as indices into this array.","trades":"Trades for signed orders."}},"simulateDelegatecall(address,bytes)":{"details":"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}},"simulateDelegatecallInternal(address,bytes)":{"details":"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Returns encoded result as revert message concatenated with the success flag of the inner call as a last byte.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}},"swap((bytes32,uint256,uint256,uint256,bytes)[],address[],(uint256,uint256,address,uint256,uint256,uint32,bytes32,uint256,uint256,uint256,bytes))":{"details":"Settle an order directly against Balancer V2 pools.","params":{"swaps":"The Balancer V2 swap steps to use for trading.","tokens":"An array of ERC20 tokens to be traded in the settlement. Swaps and the trade encode tokens as indices into this array.","trade":"The trade to match directly against Balancer liquidity. The order will always be fully executed, so the trade's `executedAmount` field is used to represent a swap limit amount."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/GPv2Settlement.sol":"GPv2Settlement"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"}},"version":1},"id":8} \ No newline at end of file diff --git a/out/GPv2Signing.sol/GPv2Signing.json b/out/GPv2Signing.sol/GPv2Signing.json new file mode 100644 index 0000000..a8e13f7 --- /dev/null +++ b/out/GPv2Signing.sol/GPv2Signing.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"preSignature","inputs":[{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setPreSignature","inputs":[{"name":"orderUid","type":"bytes","internalType":"bytes"},{"name":"signed","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"PreSignature","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"orderUid","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"signed","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"domainSeparator()":"f698da25","preSignature(bytes)":"d08d33d1","setPreSignature(bytes,bool)":"ec6cb13f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"orderUid\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"signed\",\"type\":\"bool\"}],\"name\":\"PreSignature\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"preSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"orderUid\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"signed\",\"type\":\"bool\"}],\"name\":\"setPreSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Gnosis Developers\",\"events\":{\"PreSignature(address,bytes,bool)\":{\"details\":\"Event that is emitted when an account either pre-signs an order or revokes an existing pre-signature.\"}},\"kind\":\"dev\",\"methods\":{\"setPreSignature(bytes,bool)\":{\"details\":\"Sets a presignature for the specified order UID.\",\"params\":{\"orderUid\":\"The unique identifier of the order to pre-sign.\",\"signed\":\"True to set the order as tradable with pre-sign, false to false to unset it.\"}}},\"stateVariables\":{\"DOMAIN_NAME\":{\"details\":\"The EIP-712 domain name used for computing the domain separator.\"},\"DOMAIN_TYPE_HASH\":{\"details\":\"The EIP-712 domain type hash used for computing the domain separator.\"},\"DOMAIN_VERSION\":{\"details\":\"The EIP-712 domain version used for computing the domain separator.\"},\"ECDSA_SIGNATURE_LENGTH\":{\"details\":\"The length of any signature from an externally owned account.\"},\"PRE_SIGNED\":{\"details\":\"Marker value indicating an order is pre-signed.\"},\"domainSeparator\":{\"details\":\"The domain separator used for signing orders that gets mixed in making signatures for different domains incompatible. This domain separator is computed following the EIP-712 standard and has replay protection mixed in so that signed orders are only valid for specific GPv2 contracts.\"},\"preSignature\":{\"details\":\"Storage indicating whether or not an order has been signed by a particular address.\"}},\"title\":\"Gnosis Protocol v2 Signing Library.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":\"GPv2Signing\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes","name":"orderUid","type":"bytes","indexed":false},{"internalType":"bool","name":"signed","type":"bool","indexed":false}],"type":"event","name":"PreSignature","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"preSignature","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"orderUid","type":"bytes"},{"internalType":"bool","name":"signed","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPreSignature"}],"devdoc":{"kind":"dev","methods":{"setPreSignature(bytes,bool)":{"details":"Sets a presignature for the specified order UID.","params":{"orderUid":"The unique identifier of the order to pre-sign.","signed":"True to set the order as tradable with pre-sign, false to false to unset it."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":"GPv2Signing"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"}},"version":1},"id":22} \ No newline at end of file diff --git a/out/GPv2Trade.sol/GPv2Trade.json b/out/GPv2Trade.sol/GPv2Trade.json new file mode 100644 index 0000000..e7657fb --- /dev/null +++ b/out/GPv2Trade.sol/GPv2Trade.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6a11ce6c393c2b5fb8141ca7cd31d28c7d5d640b33d8b21b263f320ce2fd9bf64736f6c63430008130033","sourceMap":"252:5179:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;252:5179:18;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6a11ce6c393c2b5fb8141ca7cd31d28c7d5d640b33d8b21b263f320ce2fd9bf64736f6c63430008130033","sourceMap":"252:5179:18:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Gnosis Developers\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Gnosis Protocol v2 Trade Library.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":\"GPv2Trade\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":"GPv2Trade"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"}},"version":1},"id":18} \ No newline at end of file diff --git a/out/GPv2TradeEncoder.sol/GPv2TradeEncoder.json b/out/GPv2TradeEncoder.sol/GPv2TradeEncoder.json new file mode 100644 index 0000000..2f6ddef --- /dev/null +++ b/out/GPv2TradeEncoder.sol/GPv2TradeEncoder.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abcdc7077de48b639cff2c68296d6364afe05372817703d0bffc2cc26720d37264736f6c63430008130033","sourceMap":"667:4659:123:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;667:4659:123;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abcdc7077de48b639cff2c68296d6364afe05372817703d0bffc2cc26720d37264736f6c63430008130033","sourceMap":"667:4659:123:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"https://github.com/cowprotocol/contracts/blob/d043b0bfac7a09463c74dfe1613d0612744ed91c/src/contracts/libraries/GPv2Trade.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/vendored/GPv2TradeEncoder.sol\":\"GPv2TradeEncoder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"test/vendored/GPv2TradeEncoder.sol\":{\"keccak256\":\"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1\",\"dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/vendored/GPv2TradeEncoder.sol":"GPv2TradeEncoder"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45","urls":["bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45","dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"test/vendored/GPv2TradeEncoder.sol":{"keccak256":"0x73c0ce61babf16eea11fc53394f0c7cc0c3d597a8f71e523c6c45383b34b7a40","urls":["bzz-raw://61bb280ff1da3c6b5f0958821b7ecb698a773e196532b6a6ed50cd3366e7aef1","dweb:/ipfs/Qmat7rWKGBFHXx2YwFpSSSGR9X2YD7yxXvG92tixeTN2Yb"],"license":"GPL-3.0"}},"version":1},"id":123} \ No newline at end of file diff --git a/out/GPv2Transfer.sol/GPv2Transfer.json b/out/GPv2Transfer.sol/GPv2Transfer.json new file mode 100644 index 0000000..7b8fac9 --- /dev/null +++ b/out/GPv2Transfer.sol/GPv2Transfer.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c35c8b5963f79fe26e5d56a58d82070b822f0d2e2eb26d78c6415d883124b0a164736f6c63430008130033","sourceMap":"296:7744:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;296:7744:19;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c35c8b5963f79fe26e5d56a58d82070b822f0d2e2eb26d78c6415d883124b0a164736f6c63430008130033","sourceMap":"296:7744:19:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Gnosis Developers\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"BUY_ETH_ADDRESS\":{\"details\":\"Ether marker address used to indicate an Ether transfer.\"}},\"title\":\"Gnosis Protocol v2 Transfers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":\"GPv2Transfer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":"GPv2Transfer"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"}},"version":1},"id":19} \ No newline at end of file diff --git a/out/GPv2VaultRelayer.sol/GPv2VaultRelayer.json b/out/GPv2VaultRelayer.sol/GPv2VaultRelayer.json new file mode 100644 index 0000000..3c49e23 --- /dev/null +++ b/out/GPv2VaultRelayer.sol/GPv2VaultRelayer.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"vault_","type":"address","internalType":"contract IVault"}],"stateMutability":"nonpayable"},{"type":"function","name":"batchSwapWithFee","inputs":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"swaps","type":"tuple[]","internalType":"struct IVault.BatchSwapStep[]","components":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"assetInIndex","type":"uint256","internalType":"uint256"},{"name":"assetOutIndex","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"funds","type":"tuple","internalType":"struct IVault.FundManagement","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"fromInternalBalance","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address payable"},{"name":"toInternalBalance","type":"bool","internalType":"bool"}]},{"name":"limits","type":"int256[]","internalType":"int256[]"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"feeTransfer","type":"tuple","internalType":"struct GPv2Transfer.Data","components":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"balance","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"tokenDeltas","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAccounts","inputs":[{"name":"transfers","type":"tuple[]","internalType":"struct GPv2Transfer.Data[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"balance","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033","sourceMap":"290:2652:9:-:0;;;613:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;660:10;650:20;;-1:-1:-1;;;;;680:14:9;;;290:2652;;14:305:124;99:6;152:2;140:9;131:7;127:23;123:32;120:52;;;168:1;165;158:12;120:52;194:16;;-1:-1:-1;;;;;239:31:124;;229:42;;219:70;;285:1;282;275:12;219:70;308:5;14:305;-1:-1:-1;;;14:305:124:o;:::-;290:2652:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033","sourceMap":"290:2652:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:588;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1228:171;;;;;;:::i;:::-;;:::i;:::-;;2352:588;2673:27;859:10;:21;873:7;859:21;;851:51;;;;;;;6863:2:124;851:51:9;;;6845:21:124;6902:2;6882:18;;;6875:30;6941:19;6921:18;;;6914:47;6978:18;;851:51:9;;;;;;;;;2726:143:::1;::::0;;;;:15:::1;:5;:15;::::0;::::1;::::0;:143:::1;::::0;2755:4;;2773:5;;;;2792:6;;2812:5;;2831:6;;2851:8;;2726:143:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;2712:157:::0;-1:-1:-1;2879:54:9::1;:29;:5;:29;2909:11:::0;2922:10:::1;2879:29;:54::i;:::-;2352:588:::0;;;;;;;;;;:::o;1228:171::-;859:10;:21;873:7;859:21;;851:51;;;;;;;6863:2:124;851:51:9;;;6845:21:124;6902:2;6882:18;;;6875:30;6941:19;6921:18;;;6914:47;6978:18;;851:51:9;6661:341:124;851:51:9;1343:49:::1;:26;:5;:26;1370:9:::0;;1381:10:::1;1343:26;:49::i;:::-;1228:171:::0;;:::o;1787:1123:19:-;631:42;1955:14;;;;;;;;:::i;:::-;1947:42;;;1926:121;;;;;;;12691:2:124;1926:121:19;;;12673:21:124;;;12710:18;;;12703:30;12769:34;12749:18;;;12742:62;12821:18;;1926:121:19;12489:356:124;1926:121:19;2082:23;2062:8;:16;;;:43;2058:846;;2121:139;2170:16;;;;:8;:16;:::i;:::-;2204:9;2231:15;;;;;;2121:14;;;;;;:::i;:::-;:31;;;:139;;:31;:139::i;:::-;1787:1123;;;:::o;2058:846::-;2350:29;;;2377:1;2350:29;;;;;;;;;2291:56;;2350:29;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:29:19;;;;;;;;;;;;;;2291:88;;2394:37;2434:10;2445:1;2434:13;;;;;;;;:::i;:::-;;;;;;;2394:53;;2498:26;2478:8;:16;;;:46;:168;;2604:42;2478:168;;;2543:42;2478:168;2461:9;;:185;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;2678:14:19;;;;;;;;:::i;:::-;2660:32;;:15;;;;:32;;;;2725:15;;;;;2706:16;;;:34;2773:16;;;;2725:8;2773:16;:::i;:::-;2754:35;;;;:16;;;:35;2803:40;;;:19;;;:40;2858:35;;;;;:23;;;;;;:35;;2882:10;;2858:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2277:627;;1787:1123;;;:::o;3507:1809::-;3919:40;4002:9;3962:66;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3962:66:19;;;;;;;;;;;;;;;3919:109;;4038:22;4080:9;4075:1076;4095:20;;;4075:1076;;;4136:22;4161:9;;4171:1;4161:12;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;631:42:19;;-1:-1:-1;4220:14:19;;;;;;;;:::i;:::-;4212:42;;;4187:133;;;;;;;12691:2:124;4187:133:19;;;12673:21:124;;;12710:18;;;12703:30;12769:34;12749:18;;;12742:62;12821:18;;4187:133:19;12489:356:124;4187:133:19;4359:23;4339:8;:16;;;:43;4335:806;;4402:155;4455:16;;;;:8;:16;:::i;:::-;4493:9;4524:15;;;;;;4402:14;;;;;;:::i;:155::-;4335:806;;;4596:37;4636:10;4668:16;;;;:::i;:::-;;;4636:66;;;;;;;;:::i;:::-;;;;;;;4596:106;;4757:26;4737:8;:16;;;:46;:176;;4871:42;4737:176;;;4806:42;4737:176;4720:9;;:193;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;4949:14:19;;;;;;;;:::i;:::-;4931:32;;:15;;;;:32;;;;5000:15;;;;;4981:16;;;:34;5052:16;;;;5000:8;5052:16;:::i;:::-;5033:35;;;;:16;;;:35;5086:40;;:19;;;;:40;4335:806;-1:-1:-1;4117:3:19;;;;:::i;:::-;;;;4075:1076;;;-1:-1:-1;5165:18:19;;5161:149;;7993:29;;;5264:35;;;;;:23;;;;;;:35;;5288:10;;5264:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5161:149;3636:1680;;3507:1809;;;;:::o;1339:990:17:-;1644:4;1638:11;1496:27;1662:36;;;1788:42;1778:53;;;1758:1;1735:25;;1711:134;1926:51;;1905:2;1882:26;;1858:133;2034:2;2011:26;;2004:41;;;1496:27;1477:16;;2110:3;1638:11;1477:16;2081:5;2074;2069:51;2059:177;;2161:16;2158:1;2155;2140:38;2205:16;2202:1;2195:27;2059:177;;2264:28;2286:5;2264:21;:28::i;:::-;2256:66;;;;;;;15093:2:124;2256:66:17;;;15075:21:124;15132:2;15112:18;;;15105:30;15171:27;15151:18;;;15144:55;15216:18;;2256:66:17;14891:349:124;2256:66:17;1467:862;1339:990;;;;:::o;2527:2892::-;2608:12;3776:253;;;3851:18;3845:4;3838:32;3900:4;3894;3887:18;3935:6;3929:4;3922:20;;3972:7;3966:4;3959:21;4010:4;4004;3997:18;3776:253;4050:16;4138:513;;;;4741:2;4736:558;;;;5333:56;5355:33;5351:2;5333:56;:::i;:::-;4043:1360;;4138:513;4514:5;4502:18;4492:115;;4544:45;4566:22;4562:2;4544:45;:::i;:::-;4636:1;4625:12;;4138:513;;4736:558;4783:16;4780:1;4777;4762:38;5276:1;5270:8;5263:16;5256:24;5245:35;;4043:1360;;2527:2892;;;:::o;14:389:124:-;99:8;109:6;163:3;156:4;148:6;144:17;140:27;130:55;;181:1;178;171:12;130:55;-1:-1:-1;204:20:124;;247:18;236:30;;233:50;;;279:1;276;269:12;233:50;316:4;308:6;304:17;292:29;;376:3;369:4;359:6;356:1;352:14;344:6;340:27;336:38;333:47;330:67;;;393:1;390;383:12;330:67;14:389;;;;;:::o;408:184::-;460:77;457:1;450:88;557:4;554:1;547:15;581:4;578:1;571:15;597:334;668:2;662:9;724:2;714:13;;729:66;710:86;698:99;;827:18;812:34;;848:22;;;809:62;806:88;;;874:18;;:::i;:::-;910:2;903:22;597:334;;-1:-1:-1;597:334:124:o;936:191::-;1004:4;1037:18;1029:6;1026:30;1023:56;;;1059:18;;:::i;:::-;-1:-1:-1;1104:1:124;1100:14;1116:4;1096:25;;936:191::o;1132:162::-;1226:42;1219:5;1215:54;1208:5;1205:65;1195:93;;1284:1;1281;1274:12;1195:93;1132:162;:::o;1299:761::-;1361:5;1414:3;1407:4;1399:6;1395:17;1391:27;1381:55;;1432:1;1429;1422:12;1381:55;1468:6;1455:20;1494:4;1518:68;1534:51;1582:2;1534:51;:::i;:::-;1518:68;:::i;:::-;1620:15;;;1706:1;1702:10;;;;1690:23;;1686:32;;;1651:12;;;;1730:15;;;1727:35;;;1758:1;1755;1748:12;1727:35;1794:2;1786:6;1782:15;1806:225;1822:6;1817:3;1814:15;1806:225;;;1902:3;1889:17;1919:39;1952:5;1919:39;:::i;:::-;1971:18;;2009:12;;;;1839;;1806:225;;;-1:-1:-1;2049:5:124;1299:761;-1:-1:-1;;;;;;1299:761:124:o;2065:160::-;2130:20;;2186:13;;2179:21;2169:32;;2159:60;;2215:1;2212;2205:12;2159:60;2065:160;;;:::o;2230:779::-;2291:5;2339:4;2327:9;2322:3;2318:19;2314:30;2311:50;;;2357:1;2354;2347:12;2311:50;2390:2;2384:9;2432:4;2424:6;2420:17;2503:6;2491:10;2488:22;2467:18;2455:10;2452:34;2449:62;2446:88;;;2514:18;;:::i;:::-;2550:2;2543:22;2583:6;-1:-1:-1;2583:6:124;2613:23;;2645:41;2613:23;2645:41;:::i;:::-;2695:23;;2751:35;2782:2;2767:18;;2751:35;:::i;:::-;2746:2;2738:6;2734:15;2727:60;2839:2;2828:9;2824:18;2811:32;2852:41;2885:7;2852:41;:::i;:::-;2921:2;2909:15;;2902:32;2967:35;2998:2;2983:18;;2967:35;:::i;:::-;2962:2;2954:6;2950:15;2943:60;;2230:779;;;;:::o;3014:669::-;3067:5;3120:3;3113:4;3105:6;3101:17;3097:27;3087:55;;3138:1;3135;3128:12;3087:55;3174:6;3161:20;3200:4;3224:68;3240:51;3288:2;3240:51;:::i;3224:68::-;3326:15;;;3412:1;3408:10;;;;3396:23;;3392:32;;;3357:12;;;;3436:15;;;3433:35;;;3464:1;3461;3454:12;3433:35;3500:2;3492:6;3488:15;3512:142;3528:6;3523:3;3520:15;3512:142;;;3594:17;;3582:30;;3632:12;;;;3545;;3512:142;;3688:153;3745:5;3790:3;3781:6;3776:3;3772:16;3768:26;3765:46;;;3807:1;3804;3797:12;3846:1464;4152:6;4160;4168;4176;4184;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;4317:9;4304:23;4356:1;4349:5;4346:12;4336:40;;4372:1;4369;4362:12;4336:40;4395:5;-1:-1:-1;4451:2:124;4436:18;;4423:32;4474:18;4504:14;;;4501:34;;;4531:1;4528;4521:12;4501:34;4570:92;4654:7;4645:6;4634:9;4630:22;4570:92;:::i;:::-;4681:8;;-1:-1:-1;4544:118:124;-1:-1:-1;4769:2:124;4754:18;;4741:32;;-1:-1:-1;4785:16:124;;;4782:36;;;4814:1;4811;4804:12;4782:36;4837:71;4900:7;4889:8;4878:9;4874:24;4837:71;:::i;:::-;4827:81;;4927:61;4980:7;4975:2;4964:9;4960:18;4927:61;:::i;:::-;4917:71;;5041:3;5030:9;5026:19;5013:33;4997:49;;5071:2;5061:8;5058:16;5055:36;;;5087:1;5084;5077:12;5055:36;;5110:62;5164:7;5153:8;5142:9;5138:24;5110:62;:::i;:::-;5100:72;;;5219:3;5208:9;5204:19;5191:33;5181:43;;5243:61;5296:7;5290:3;5279:9;5275:19;5243:61;:::i;:::-;5233:71;;3846:1464;;;;;;;;;;;:::o;5315:434::-;5367:3;5405:5;5399:12;5432:6;5427:3;5420:19;5458:4;5487:2;5482:3;5478:12;5471:19;;5524:2;5517:5;5513:14;5545:1;5555:169;5569:6;5566:1;5563:13;5555:169;;;5630:13;;5618:26;;5664:12;;;;5699:15;;;;5591:1;5584:9;5555:169;;;-1:-1:-1;5740:3:124;;5315:434;-1:-1:-1;;;;;5315:434:124:o;5754:258::-;5931:2;5920:9;5913:21;5894:4;5951:55;6002:2;5991:9;5987:18;5979:6;5951:55;:::i;:::-;5943:63;5754:258;-1:-1:-1;;;5754:258:124:o;6017:639::-;6127:6;6135;6188:2;6176:9;6167:7;6163:23;6159:32;6156:52;;;6204:1;6201;6194:12;6156:52;6244:9;6231:23;6273:18;6314:2;6306:6;6303:14;6300:34;;;6330:1;6327;6320:12;6300:34;6368:6;6357:9;6353:22;6343:32;;6413:7;6406:4;6402:2;6398:13;6394:27;6384:55;;6435:1;6432;6425:12;6384:55;6475:2;6462:16;6501:2;6493:6;6490:14;6487:34;;;6517:1;6514;6507:12;6487:34;6570:7;6565:2;6555:6;6552:1;6548:14;6544:2;6540:23;6536:32;6533:45;6530:65;;;6591:1;6588;6581:12;6530:65;6622:2;6614:11;;;;;6644:6;;-1:-1:-1;6017:639:124;;-1:-1:-1;;;;6017:639:124:o;7007:184::-;7059:77;7056:1;7049:88;7156:4;7153:1;7146:15;7180:4;7177:1;7170:15;7196:325;7284:6;7279:3;7272:19;7336:6;7329:5;7322:4;7317:3;7313:14;7300:43;;7388:1;7381:4;7372:6;7367:3;7363:16;7359:27;7352:38;7254:3;7510:4;7440:66;7435:2;7427:6;7423:15;7419:88;7414:3;7410:98;7406:109;7399:116;;7196:325;;;;:::o;7526:492::-;7587:3;7625:5;7619:12;7652:6;7647:3;7640:19;7678:4;7707:2;7702:3;7698:12;7691:19;;7744:2;7737:5;7733:14;7765:1;7775:218;7789:6;7786:1;7783:13;7775:218;;;7854:13;;7869:42;7850:62;7838:75;;7933:12;;;;7968:15;;;;7811:1;7804:9;7775:218;;8406:2910;8950:4;8979:3;9020:2;9009:9;9005:18;9053:1;9045:6;9042:13;9032:47;;9059:18;;:::i;:::-;9088:25;;;9132:2;9150:18;;;9143:30;;;;9208:22;;;9249:3;9268:18;;;;9332:1;9328:14;;;9313:30;;9309:39;;;;9371:6;-1:-1:-1;9405:1534:124;9419:6;9416:1;9413:13;9405:1534;;;9508:66;9496:9;9488:6;9484:22;9480:95;9475:3;9468:108;9628:6;9615:20;9715:66;9706:6;9690:14;9686:27;9682:100;9662:18;9658:125;9648:153;;9797:1;9794;9787:12;9648:153;9827:31;;9913:19;;9898:35;;9983:14;;;9970:28;9953:15;;;9946:53;10022:4;10076:14;;;10063:28;10046:15;;;10039:53;10115:4;10169:14;;;10156:28;10139:15;;;10132:53;9881:4;10208;10266:14;;;10253:28;10338:14;10334:26;;;10362:66;10330:99;10304:126;;10294:154;;10444:1;10441;10434:12;10294:154;10476:32;;;10584:16;;;;-1:-1:-1;10535:21:124;10627:18;10616:30;;10613:50;;;10659:1;10656;10649:12;10613:50;10712:6;10696:14;10692:27;10683:7;10679:41;10676:61;;;10733:1;10730;10723:12;10676:61;10774:2;10769;10761:6;10757:15;10750:27;10800:59;10855:2;10847:6;10843:15;10835:6;10826:7;10800:59;:::i;:::-;10917:12;;;;10790:69;-1:-1:-1;;;10882:15:124;;;;-1:-1:-1;;9441:1:124;9434:9;9405:1534;;;9409:3;;;10989:9;10981:6;10977:22;10970:4;10959:9;10955:20;10948:52;11023;11068:6;11060;11023:52;:::i;:::-;11009:66;;;11084:62;11140:4;11129:9;11125:20;11117:6;8101:42;8182:2;8174:5;8168:12;8164:21;8159:3;8152:34;8249:4;8242:5;8238:16;8232:23;8225:31;8218:39;8211:4;8206:3;8202:14;8195:63;8319:2;8311:4;8304:5;8300:16;8294:23;8290:32;8283:4;8278:3;8274:14;8267:56;;8386:4;8379:5;8375:16;8369:23;8362:31;8355:39;8348:4;8343:3;8339:14;8332:63;8023:378;;;11084:62;11195:9;11187:6;11183:22;11177:3;11166:9;11162:19;11155:51;11223:43;11259:6;11251;11223:43;:::i;:::-;11215:51;;;11303:6;11297:3;11286:9;11282:19;11275:35;8406:2910;;;;;;;;;;:::o;11321:888::-;11415:6;11446:2;11489;11477:9;11468:7;11464:23;11460:32;11457:52;;;11505:1;11502;11495:12;11457:52;11538:9;11532:16;11571:18;11563:6;11560:30;11557:50;;;11603:1;11600;11593:12;11557:50;11626:22;;11679:4;11671:13;;11667:27;-1:-1:-1;11657:55:124;;11708:1;11705;11698:12;11657:55;11737:2;11731:9;11760:68;11776:51;11824:2;11776:51;:::i;11760:68::-;11862:15;;;11944:1;11940:10;;;;11932:19;;11928:28;;;11893:12;;;;11968:19;;;11965:39;;;12000:1;11997;11990:12;11965:39;12024:11;;;;12044:135;12060:6;12055:3;12052:15;12044:135;;;12126:10;;12114:23;;12077:12;;;;12157;;;;12044:135;;;12198:5;11321:888;-1:-1:-1;;;;;;;11321:888:124:o;12214:270::-;12288:6;12341:2;12329:9;12320:7;12316:23;12312:32;12309:52;;;12357:1;12354;12347:12;12309:52;12396:9;12383:23;12415:39;12448:5;12415:39;:::i;13110:184::-;13162:77;13159:1;13152:88;13259:4;13256:1;13249:15;13283:4;13280:1;13273:15;13299:1233;13532:2;13584:21;;;13654:13;;13557:18;;;13676:22;;;13503:4;;13532:2;13717;;13735:18;;;;13776:15;;;13503:4;13819:687;13833:6;13830:1;13827:13;13819:687;;;13898:6;13892:13;13934:2;13928:9;13967:1;13963:2;13960:9;13950:43;;13973:18;;:::i;:::-;14006:15;;14060:11;;;14054:18;14095:42;14171:21;;;14157:12;;;14150:43;14233:11;;;14227:18;14213:12;;;14206:40;14269:4;14317:11;;;14311:18;14307:27;;14293:12;;;14286:49;14358:4;14406:11;;;14400:18;14396:27;14382:12;;;14375:49;14453:4;14444:14;;;;14481:15;;;;13855:1;13848:9;13819:687;;;-1:-1:-1;14523:3:124;;13299:1233;-1:-1:-1;;;;;;;13299:1233:124:o;14537:349::-;14576:3;14607:66;14600:5;14597:77;14594:257;;14707:77;14704:1;14697:88;14808:4;14805:1;14798:15;14836:4;14833:1;14826:15;14594:257;-1:-1:-1;14878:1:124;14867:13;;14537:349::o","linkReferences":{},"immutableReferences":{"4066":[{"start":147,"length":32},{"start":617,"length":32}],"4070":[{"start":348,"length":32},{"start":542,"length":32},{"start":778,"length":32}]}},"methodIdentifiers":{"batchSwapWithFee(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,(address,address,uint256,bytes32))":"4817a286","transferFromAccounts((address,address,uint256,bytes32)[])":"7d10d11f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"balance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Transfer.Data\",\"name\":\"feeTransfer\",\"type\":\"tuple\"}],\"name\":\"batchSwapWithFee\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"tokenDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"balance\",\"type\":\"bytes32\"}],\"internalType\":\"struct GPv2Transfer.Data[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"}],\"name\":\"transferFromAccounts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Gnosis Developers\",\"kind\":\"dev\",\"methods\":{\"batchSwapWithFee(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,(address,address,uint256,bytes32))\":{\"details\":\"Performs a Balancer batched swap on behalf of a user and sends a fee to the caller. This function reverts if: - The caller is not the creator of the vault relayer - The swap fails - The fee transfer fails\",\"params\":{\"deadline\":\"The deadline for the swap.\",\"feeTransfer\":\"The transfer data for the caller fee.\",\"funds\":\"The fund management settings, specifying the user the swap is being performed for as well as the recipient of the proceeds.\",\"kind\":\"The Balancer swap kind, this can either be `GIVEN_IN` for sell orders or `GIVEN_OUT` for buy orders.\",\"limits\":\"Swap limits for encoding limit prices.\",\"swaps\":\"The swaps to perform.\",\"tokens\":\"The tokens for the swaps. Swaps encode to and from tokens as indices into this array.\"},\"returns\":{\"tokenDeltas\":\"The executed swap amounts.\"}},\"transferFromAccounts((address,address,uint256,bytes32)[])\":{\"details\":\"Transfers all sell amounts for the executed trades from their owners to the caller. This function reverts if: - The caller is not the creator of the vault relayer - Any ERC20 transfer fails\",\"params\":{\"transfers\":\"The transfers to execute.\"}}},\"stateVariables\":{\"creator\":{\"details\":\"The creator of the contract which has special permissions. This value is set at creation time and cannot change.\"},\"vault\":{\"details\":\"The vault this relayer is for.\"}},\"title\":\"Gnosis Protocol v2 Vault Relayer Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":\"GPv2VaultRelayer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]","components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}]},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"struct GPv2Transfer.Data","name":"feeTransfer","type":"tuple","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"balance","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"batchSwapWithFee","outputs":[{"internalType":"int256[]","name":"tokenDeltas","type":"int256[]"}]},{"inputs":[{"internalType":"struct GPv2Transfer.Data[]","name":"transfers","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"balance","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"transferFromAccounts"}],"devdoc":{"kind":"dev","methods":{"batchSwapWithFee(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,(address,address,uint256,bytes32))":{"details":"Performs a Balancer batched swap on behalf of a user and sends a fee to the caller. This function reverts if: - The caller is not the creator of the vault relayer - The swap fails - The fee transfer fails","params":{"deadline":"The deadline for the swap.","feeTransfer":"The transfer data for the caller fee.","funds":"The fund management settings, specifying the user the swap is being performed for as well as the recipient of the proceeds.","kind":"The Balancer swap kind, this can either be `GIVEN_IN` for sell orders or `GIVEN_OUT` for buy orders.","limits":"Swap limits for encoding limit prices.","swaps":"The swaps to perform.","tokens":"The tokens for the swaps. Swaps encode to and from tokens as indices into this array."},"returns":{"tokenDeltas":"The executed swap amounts."}},"transferFromAccounts((address,address,uint256,bytes32)[])":{"details":"Transfers all sell amounts for the executed trades from their owners to the caller. This function reverts if: - The caller is not the creator of the vault relayer - Any ERC20 transfer fails","params":{"transfers":"The transfers to execute."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":"GPv2VaultRelayer"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"}},"version":1},"id":9} \ No newline at end of file diff --git a/out/GuardManager.sol/BaseGuard.json b/out/GuardManager.sol/BaseGuard.json new file mode 100644 index 0000000..c4027dc --- /dev/null +++ b/out/GuardManager.sol/BaseGuard.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"checkAfterExecution","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"},{"name":"success","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkTransaction","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"},{"name":"safeTxGas","type":"uint256","internalType":"uint256"},{"name":"baseGas","type":"uint256","internalType":"uint256"},{"name":"gasPrice","type":"uint256","internalType":"uint256"},{"name":"gasToken","type":"address","internalType":"address"},{"name":"refundReceiver","type":"address","internalType":"address payable"},{"name":"signatures","type":"bytes","internalType":"bytes"},{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"checkAfterExecution(bytes32,bool)":"93271368","checkTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes,address)":"75f0bb52","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"checkAfterExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"safeTxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"gasToken\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"refundReceiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"checkTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/base/GuardManager.sol\":\"BaseGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"checkAfterExecution"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"address payable","name":"refundReceiver","type":"address"},{"internalType":"bytes","name":"signatures","type":"bytes"},{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkTransaction"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/base/GuardManager.sol":"BaseGuard"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"}},"version":1},"id":49} \ No newline at end of file diff --git a/out/GuardManager.sol/Guard.json b/out/GuardManager.sol/Guard.json new file mode 100644 index 0000000..4f52291 --- /dev/null +++ b/out/GuardManager.sol/Guard.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"checkAfterExecution","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"},{"name":"success","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkTransaction","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"},{"name":"safeTxGas","type":"uint256","internalType":"uint256"},{"name":"baseGas","type":"uint256","internalType":"uint256"},{"name":"gasPrice","type":"uint256","internalType":"uint256"},{"name":"gasToken","type":"address","internalType":"address"},{"name":"refundReceiver","type":"address","internalType":"address payable"},{"name":"signatures","type":"bytes","internalType":"bytes"},{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"checkAfterExecution(bytes32,bool)":"93271368","checkTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes,address)":"75f0bb52","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"checkAfterExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"safeTxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"gasToken\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"refundReceiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"checkTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/base/GuardManager.sol\":\"Guard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"checkAfterExecution"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"address payable","name":"refundReceiver","type":"address"},{"internalType":"bytes","name":"signatures","type":"bytes"},{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkTransaction"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/base/GuardManager.sol":"Guard"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"}},"version":1},"id":49} \ No newline at end of file diff --git a/out/GuardManager.sol/GuardManager.json b/out/GuardManager.sol/GuardManager.json new file mode 100644 index 0000000..dba72ee --- /dev/null +++ b/out/GuardManager.sol/GuardManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"setGuard","inputs":[{"name":"guard","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ChangedGuard","inputs":[{"name":"guard","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"setGuard(address)":"e19a9dd9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guard\",\"type\":\"address\"}],\"name\":\"ChangedGuard\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guard\",\"type\":\"address\"}],\"name\":\"setGuard\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{\"setGuard(address)\":{\"details\":\"Set a guard that checks transactions before execution This can only be done via a Safe transaction. \\u26a0\\ufe0f IMPORTANT: Since a guard has full power to block Safe transaction execution, a broken guard can cause a denial of service for the Safe. Make sure to carefully audit the guard code and design recovery mechanisms.\",\"params\":{\"guard\":\"The address of the guard to be used or the 0 address to disable the guard\"}}},\"title\":\"Guard Manager - A contract managing transaction guards which perform pre and post-checks on Safe transactions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setGuard(address)\":{\"notice\":\"Set Transaction Guard `guard` for the Safe. Make sure you trust the guard.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/base/GuardManager.sol\":\"GuardManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"guard","type":"address","indexed":true}],"type":"event","name":"ChangedGuard","anonymous":false},{"inputs":[{"internalType":"address","name":"guard","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGuard"}],"devdoc":{"kind":"dev","methods":{"setGuard(address)":{"details":"Set a guard that checks transactions before execution This can only be done via a Safe transaction. ⚠️ IMPORTANT: Since a guard has full power to block Safe transaction execution, a broken guard can cause a denial of service for the Safe. Make sure to carefully audit the guard code and design recovery mechanisms.","params":{"guard":"The address of the guard to be used or the 0 address to disable the guard"}}},"version":1},"userdoc":{"kind":"user","methods":{"setGuard(address)":{"notice":"Set Transaction Guard `guard` for the Safe. Make sure you trust the guard."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/base/GuardManager.sol":"GuardManager"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"}},"version":1},"id":49} \ No newline at end of file diff --git a/out/HandlerContext.sol/HandlerContext.json b/out/HandlerContext.sol/HandlerContext.json new file mode 100644 index 0000000..42812e4 --- /dev/null +++ b/out/HandlerContext.sol/HandlerContext.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"details\":\"The fallback manager appends the following context to the calldata: 1. Fallback manager caller address (non-padded) based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/f8cc8b844a9f92f63dc55aa581f7d643a1bc5ac1/contracts/metatx/ERC2771Context.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Handler Context - Allows the fallback handler to extract addition context from the calldata\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/HandlerContext.sol\":\"HandlerContext\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/HandlerContext.sol":"HandlerContext"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"}},"version":1},"id":62} \ No newline at end of file diff --git a/out/IAggregatorV3Interface.sol/IAggregatorV3Interface.json b/out/IAggregatorV3Interface.sol/IAggregatorV3Interface.json new file mode 100644 index 0000000..4493558 --- /dev/null +++ b/out/IAggregatorV3Interface.sol/IAggregatorV3Interface.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"description","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getRoundData","inputs":[{"name":"_roundId","type":"uint80","internalType":"uint80"}],"outputs":[{"name":"roundId","type":"uint80","internalType":"uint80"},{"name":"answer","type":"int256","internalType":"int256"},{"name":"startedAt","type":"uint256","internalType":"uint256"},{"name":"updatedAt","type":"uint256","internalType":"uint256"},{"name":"answeredInRound","type":"uint80","internalType":"uint80"}],"stateMutability":"view"},{"type":"function","name":"latestRoundData","inputs":[],"outputs":[{"name":"roundId","type":"uint80","internalType":"uint80"},{"name":"answer","type":"int256","internalType":"int256"},{"name":"startedAt","type":"uint256","internalType":"uint256"},{"name":"updatedAt","type":"uint256","internalType":"uint256"},{"name":"answeredInRound","type":"uint80","internalType":"uint80"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"decimals()":"313ce567","description()":"7284e416","getRoundData(uint80)":"9a6fc8f5","latestRoundData()":"feaf968c","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IAggregatorV3Interface.sol\":\"IAggregatorV3Interface\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"src/interfaces/IAggregatorV3Interface.sol\":{\"keccak256\":\"0x7edac36e73aa9a9693747b30013bc76a82f717a0c713d49dffa74842b872bb77\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aa1e61229e0d2219bff2257a5ea2ea783a6c275cbee6ef8bd322fe229f88fa7b\",\"dweb:/ipfs/Qmdw8g8jLjofmzMBraACN23NE5i5QMmJsPCqRjhmfygzJX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"description","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"stateMutability":"view","type":"function","name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IAggregatorV3Interface.sol":"IAggregatorV3Interface"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/IAggregatorV3Interface.sol":{"keccak256":"0x7edac36e73aa9a9693747b30013bc76a82f717a0c713d49dffa74842b872bb77","urls":["bzz-raw://aa1e61229e0d2219bff2257a5ea2ea783a6c275cbee6ef8bd322fe229f88fa7b","dweb:/ipfs/Qmdw8g8jLjofmzMBraACN23NE5i5QMmJsPCqRjhmfygzJX"],"license":"GPL-3.0"}},"version":1},"id":93} \ No newline at end of file diff --git a/out/IERC165.sol/IERC165.json b/out/IERC165.sol/IERC165.json new file mode 100644 index 0000000..d77bdd0 --- /dev/null +++ b/out/IERC165.sol/IERC165.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"More details at https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/interfaces/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding EIP section https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/interfaces/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"}},"version":1},"id":73} \ No newline at end of file diff --git a/out/IERC20.sol/IERC20.json b/out/IERC20.sol/IERC20.json new file mode 100644 index 0000000..e8b4536 --- /dev/null +++ b/out/IERC20.sol/IERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":"IERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"}},"version":1},"id":2} \ No newline at end of file diff --git a/out/IERC20Metadata.sol/IERC20Metadata.json b/out/IERC20Metadata.sol/IERC20Metadata.json new file mode 100644 index 0000000..ce6d1ef --- /dev/null +++ b/out/IERC20Metadata.sol/IERC20Metadata.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":"IERC20Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IMulticall3.sol/IMulticall3.json b/out/IMulticall3.sol/IMulticall3.json new file mode 100644 index 0000000..15638cc --- /dev/null +++ b/out/IMulticall3.sol/IMulticall3.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":43} \ No newline at end of file diff --git a/out/IProxyCreationCallback.sol/IProxyCreationCallback.json b/out/IProxyCreationCallback.sol/IProxyCreationCallback.json new file mode 100644 index 0000000..c610cdc --- /dev/null +++ b/out/IProxyCreationCallback.sol/IProxyCreationCallback.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"proxyCreated","inputs":[{"name":"proxy","type":"address","internalType":"contract SafeProxy"},{"name":"_singleton","type":"address","internalType":"address"},{"name":"initializer","type":"bytes","internalType":"bytes"},{"name":"saltNonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"proxyCreated(address,address,bytes,uint256)":"1e52b518"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"proxyCreated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An interface for a contract that implements a callback function to be executed after the creation of a proxy instance.\",\"kind\":\"dev\",\"methods\":{\"proxyCreated(address,address,bytes,uint256)\":{\"details\":\"Function to be called after the creation of a SafeProxy instance.\",\"params\":{\"_singleton\":\"The address of the singleton contract used to create the proxy.\",\"initializer\":\"The initializer function call data.\",\"proxy\":\"The newly created SafeProxy instance.\",\"saltNonce\":\"The nonce used to generate the salt for the proxy deployment.\"}}},\"title\":\"IProxyCreationCallback\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":\"IProxyCreationCallback\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract SafeProxy","name":"proxy","type":"address"},{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"proxyCreated"}],"devdoc":{"kind":"dev","methods":{"proxyCreated(address,address,bytes,uint256)":{"details":"Function to be called after the creation of a SafeProxy instance.","params":{"_singleton":"The address of the singleton contract used to create the proxy.","initializer":"The initializer function call data.","proxy":"The newly created SafeProxy instance.","saltNonce":"The nonce used to generate the salt for the proxy deployment."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/proxies/IProxyCreationCallback.sol":"IProxyCreationCallback"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"}},"version":1},"id":78} \ No newline at end of file diff --git a/out/ISignatureValidator.sol/ISignatureValidator.json b/out/ISignatureValidator.sol/ISignatureValidator.json new file mode 100644 index 0000000..e8982d0 --- /dev/null +++ b/out/ISignatureValidator.sol/ISignatureValidator.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_data","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes,bytes)":"20c13b0b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"params\":{\"_data\":\"Arbitrary length data signed on the behalf of address(this).\",\"_signature\":\"Signature byte array associated with _data. MUST return the bytes4 magic value 0x20c13b0b when function passes. MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5) MUST allow external calls\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"notice\":\"Legacy EIP1271 method to validate a signature.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":\"ISignatureValidator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"isValidSignature(bytes,bytes)":{"params":{"_data":"Arbitrary length data signed on the behalf of address(this).","_signature":"Signature byte array associated with _data. MUST return the bytes4 magic value 0x20c13b0b when function passes. MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5) MUST allow external calls"}}},"version":1},"userdoc":{"kind":"user","methods":{"isValidSignature(bytes,bytes)":{"notice":"Legacy EIP1271 method to validate a signature."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/interfaces/ISignatureValidator.sol":"ISignatureValidator"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":74} \ No newline at end of file diff --git a/out/ISignatureValidator.sol/ISignatureValidatorConstants.json b/out/ISignatureValidator.sol/ISignatureValidatorConstants.json new file mode 100644 index 0000000..7308726 --- /dev/null +++ b/out/ISignatureValidator.sol/ISignatureValidatorConstants.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212201909c009ef32b14e8edc878575576e9e9a93c89c130d5b988599d84a1f61141964736f6c63430008130033","sourceMap":"75:161:74:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600080fdfea26469706673582212201909c009ef32b14e8edc878575576e9e9a93c89c130d5b988599d84a1f61141964736f6c63430008130033","sourceMap":"75:161:74:-:0;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":\"ISignatureValidatorConstants\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/interfaces/ISignatureValidator.sol":"ISignatureValidatorConstants"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":74} \ No newline at end of file diff --git a/out/IVault.sol/IVault.json b/out/IVault.sol/IVault.json new file mode 100644 index 0000000..4f9ed16 --- /dev/null +++ b/out/IVault.sol/IVault.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"batchSwap","inputs":[{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"swaps","type":"tuple[]","internalType":"struct IVault.BatchSwapStep[]","components":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"assetInIndex","type":"uint256","internalType":"uint256"},{"name":"assetOutIndex","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]},{"name":"assets","type":"address[]","internalType":"contract IERC20[]"},{"name":"funds","type":"tuple","internalType":"struct IVault.FundManagement","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"fromInternalBalance","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address payable"},{"name":"toInternalBalance","type":"bool","internalType":"bool"}]},{"name":"limits","type":"int256[]","internalType":"int256[]"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"payable"},{"type":"function","name":"manageUserBalance","inputs":[{"name":"ops","type":"tuple[]","internalType":"struct IVault.UserBalanceOp[]","components":[{"name":"kind","type":"uint8","internalType":"enum IVault.UserBalanceOpKind"},{"name":"asset","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address payable"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"swap","inputs":[{"name":"singleSwap","type":"tuple","internalType":"struct IVault.SingleSwap","components":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"kind","type":"uint8","internalType":"enum IVault.SwapKind"},{"name":"assetIn","type":"address","internalType":"contract IERC20"},{"name":"assetOut","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"userData","type":"bytes","internalType":"bytes"}]},{"name":"funds","type":"tuple","internalType":"struct IVault.FundManagement","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"fromInternalBalance","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address payable"},{"name":"toInternalBalance","type":"bool","internalType":"bool"}]},{"name":"limit","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":"945bcec9","manageUserBalance((uint8,address,uint256,address,address)[])":"0e8e3e84","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":"52bbbe29"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC20\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Minimal interface for the Vault core contract only containing methods used by Gnosis Protocol V2. Original source: \",\"kind\":\"dev\",\"methods\":{\"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)\":{\"details\":\"Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either the amount of tokens sent to or received from the Pool, depending on the `kind` value. Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at the same index in the `assets` array. Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or `amountOut` depending on the swap kind. Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`. The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses, or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies the minimum or maximum amount of each token the vault is allowed to transfer. `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the equivalent `swap` call. Emits `Swap` events.\"},\"manageUserBalance((uint8,address,uint256,address,address)[])\":{\"details\":\"Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer) and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as it lets integrators reuse a user's Vault allowance. For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\"},\"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)\":{\"details\":\"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":\"IVault\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]","components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]},{"internalType":"contract IERC20[]","name":"assets","type":"address[]"},{"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}]},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"batchSwap","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]","components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IERC20","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}]}],"stateMutability":"payable","type":"function","name":"manageUserBalance"},{"inputs":[{"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple","components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IERC20","name":"assetIn","type":"address"},{"internalType":"contract IERC20","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}]},{"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}]},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":{"details":"Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either the amount of tokens sent to or received from the Pool, depending on the `kind` value. Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at the same index in the `assets` array. Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or `amountOut` depending on the swap kind. Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`. The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses, or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies the minimum or maximum amount of each token the vault is allowed to transfer. `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the equivalent `swap` call. Emits `Swap` events."},"manageUserBalance((uint8,address,uint256,address,address)[])":{"details":"Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer) and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as it lets integrators reuse a user's Vault allowance. For each operation, if the caller is not `sender`, it must be an authorized relayer for them."},"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":{"details":"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/interfaces/IVault.sol":"IVault"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"}},"version":1},"id":13} \ No newline at end of file diff --git a/out/Initializable.sol/Initializable.json b/out/Initializable.sol/Initializable.json new file mode 100644 index 0000000..28b9dbe --- /dev/null +++ b/out/Initializable.sol/Initializable.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {UpgradeableProxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/mixins/Initializable.sol":"Initializable"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file diff --git a/out/MarshalLib.sol/MarshalLib.json b/out/MarshalLib.sol/MarshalLib.json new file mode 100644 index 0000000..08e9b5c --- /dev/null +++ b/out/MarshalLib.sol/MarshalLib.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209cc4292e1d2a92d6fe0b44afd78b46c962e1423380fabd553366eebe35543bf864736f6c63430008130033","sourceMap":"75:2040:67:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;75:2040:67;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209cc4292e1d2a92d6fe0b44afd78b46c962e1423380fabd553366eebe35543bf864736f6c63430008130033","sourceMap":"75:2040:67:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":\"MarshalLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/MarshalLib.sol":"MarshalLib"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"}},"version":1},"id":67} \ No newline at end of file diff --git a/out/Merkle.sol/Merkle.json b/out/Merkle.sol/Merkle.json new file mode 100644 index 0000000..c01fe9e --- /dev/null +++ b/out/Merkle.sol/Merkle.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506109da806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063cf06c7b711610050578063cf06c7b7146100e0578063dd1d2599146100f3578063e27d51531461010657600080fd5b80632e08d6021461007757806358161a421461009d578063b8616195146100c0575b600080fd5b61008a6100853660046107ea565b610119565b6040519081526020015b60405180910390f35b6100b06100ab366004610827565b6101ed565b6040519015158152602001610094565b6100d36100ce366004610877565b610237565b60405161009491906108bc565b61008a6100ee366004610900565b6103f1565b61008a610101366004610919565b61053b565b61008a610114366004610900565b610569565b600060018251116101b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156101cb576101c482610594565b91506101b1565b816000815181106101de576101de61093b565b60200260200101519050919050565b81516000908290825b8181101561022b57610221838783815181106102145761021461093b565b602002602001015161053b565b92506001016101f6565b50509093149392505050565b606060018351116102c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c6561660000000000000000000000000000000000000000000000000000000060648201526084016101a8565b60006102d584516103f1565b67ffffffffffffffff8111156102ed576102ed610702565b604051908082528060200260200182016040528015610316578160200160208202803683370190505b50905060005b6001855111156103e75783600116600103610371578460018503815181106103465761034661093b565b60200260200101518282815181106103605761036061093b565b6020026020010181815250506103ce565b84518460010103610392576000801b8282815181106103605761036061093b565b8484600101815181106103a7576103a761093b565b60200260200101518282815181106103c1576103c161093b565b6020026020010181815250505b6001016002840493506103e085610594565b945061031c565b5090505b92915050565b60006001821161040357506000919050565b600082700100000000000000000000000000000000811061043157608093841c9361042e908361096a565b91505b68010000000000000000841061045457604093841c93610451908361096a565b91505b640100000000841061047357602093841c93610470908361096a565b91505b62010000841061049057601093841c9361048d908361096a565b91505b61010084106104ac57600893841c936104a9908361096a565b91505b601084106104c757600493841c936104c4908361096a565b91505b600484106104e257600293841c936104df908361096a565b91505b600284106104f8576104f560018361096a565b91505b6000816105078119600161096a565b16905081811480156105195750600083115b156105275750909392505050565b61053283600161096a565b95945050505050565b6000818310801561055357836000528260205261055c565b82600052836020525b5050604060002092915050565b6000808219600101831683145b831561058c57600193841c939190910190610576565b900392915050565b60608060008351905080600116600103610643576002810460010167ffffffffffffffff8111156105c7576105c7610702565b6040519080825280602002602001820160405280156105f0578160200160208202803683370190505b50915061061c84600183038151811061060b5761060b61093b565b60200260200101516000801b61053b565b826001845103815181106106325761063261093b565b60200260200101818152505061068c565b6002810467ffffffffffffffff81111561065f5761065f610702565b604051908082528060200260200182016040528015610688578160200160208202803683370190505b5091505b6000805b600183038110156106f8576106cd8682815181106106b0576106b061093b565b60200260200101518783600101815181106102145761021461093b565b8483815181106106df576106df61093b565b6020908102919091010152600190910190600201610690565b5091949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261074257600080fd5b8135602067ffffffffffffffff8083111561075f5761075f610702565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156107a2576107a2610702565b6040529384528581018301938381019250878511156107c057600080fd5b83870191505b848210156107df578135835291830191908301906107c6565b979650505050505050565b6000602082840312156107fc57600080fd5b813567ffffffffffffffff81111561081357600080fd5b61081f84828501610731565b949350505050565b60008060006060848603121561083c57600080fd5b83359250602084013567ffffffffffffffff81111561085a57600080fd5b61086686828701610731565b925050604084013590509250925092565b6000806040838503121561088a57600080fd5b823567ffffffffffffffff8111156108a157600080fd5b6108ad85828601610731565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b818110156108f4578351835292840192918401916001016108d8565b50909695505050505050565b60006020828403121561091257600080fd5b5035919050565b6000806040838503121561092c57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156103eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212202aeec704974e0a9e9e5fee8c8a0decb308cb0ba4f17e96a5a299bfa11ba04e1c64736f6c63430008130033","sourceMap":"242:576:44:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063cf06c7b711610050578063cf06c7b7146100e0578063dd1d2599146100f3578063e27d51531461010657600080fd5b80632e08d6021461007757806358161a421461009d578063b8616195146100c0575b600080fd5b61008a6100853660046107ea565b610119565b6040519081526020015b60405180910390f35b6100b06100ab366004610827565b6101ed565b6040519015158152602001610094565b6100d36100ce366004610877565b610237565b60405161009491906108bc565b61008a6100ee366004610900565b6103f1565b61008a610101366004610919565b61053b565b61008a610114366004610900565b610569565b600060018251116101b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f776f6e27742067656e657261746520726f6f7420666f722073696e676c65206c60448201527f656166000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001825111156101cb576101c482610594565b91506101b1565b816000815181106101de576101de61093b565b60200260200101519050919050565b81516000908290825b8181101561022b57610221838783815181106102145761021461093b565b602002602001015161053b565b92506001016101f6565b50509093149392505050565b606060018351116102c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f776f6e27742067656e65726174652070726f6f6620666f722073696e676c652060448201527f6c6561660000000000000000000000000000000000000000000000000000000060648201526084016101a8565b60006102d584516103f1565b67ffffffffffffffff8111156102ed576102ed610702565b604051908082528060200260200182016040528015610316578160200160208202803683370190505b50905060005b6001855111156103e75783600116600103610371578460018503815181106103465761034661093b565b60200260200101518282815181106103605761036061093b565b6020026020010181815250506103ce565b84518460010103610392576000801b8282815181106103605761036061093b565b8484600101815181106103a7576103a761093b565b60200260200101518282815181106103c1576103c161093b565b6020026020010181815250505b6001016002840493506103e085610594565b945061031c565b5090505b92915050565b60006001821161040357506000919050565b600082700100000000000000000000000000000000811061043157608093841c9361042e908361096a565b91505b68010000000000000000841061045457604093841c93610451908361096a565b91505b640100000000841061047357602093841c93610470908361096a565b91505b62010000841061049057601093841c9361048d908361096a565b91505b61010084106104ac57600893841c936104a9908361096a565b91505b601084106104c757600493841c936104c4908361096a565b91505b600484106104e257600293841c936104df908361096a565b91505b600284106104f8576104f560018361096a565b91505b6000816105078119600161096a565b16905081811480156105195750600083115b156105275750909392505050565b61053283600161096a565b95945050505050565b6000818310801561055357836000528260205261055c565b82600052836020525b5050604060002092915050565b6000808219600101831683145b831561058c57600193841c939190910190610576565b900392915050565b60608060008351905080600116600103610643576002810460010167ffffffffffffffff8111156105c7576105c7610702565b6040519080825280602002602001820160405280156105f0578160200160208202803683370190505b50915061061c84600183038151811061060b5761060b61093b565b60200260200101516000801b61053b565b826001845103815181106106325761063261093b565b60200260200101818152505061068c565b6002810467ffffffffffffffff81111561065f5761065f610702565b604051908082528060200260200182016040528015610688578160200160208202803683370190505b5091505b6000805b600183038110156106f8576106cd8682815181106106b0576106b061093b565b60200260200101518783600101815181106102145761021461093b565b8483815181106106df576106df61093b565b6020908102919091010152600190910190600201610690565b5091949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261074257600080fd5b8135602067ffffffffffffffff8083111561075f5761075f610702565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156107a2576107a2610702565b6040529384528581018301938381019250878511156107c057600080fd5b83870191505b848210156107df578135835291830191908301906107c6565b979650505050505050565b6000602082840312156107fc57600080fd5b813567ffffffffffffffff81111561081357600080fd5b61081f84828501610731565b949350505050565b60008060006060848603121561083c57600080fd5b83359250602084013567ffffffffffffffff81111561085a57600080fd5b61086686828701610731565b925050604084013590509250925092565b6000806040838503121561088a57600080fd5b823567ffffffffffffffff8111156108a157600080fd5b6108ad85828601610731565b95602094909401359450505050565b6020808252825182820181905260009190848201906040850190845b818110156108f4578351835292840192918401916001016108d8565b50909695505050505050565b60006020828403121561091257600080fd5b5035919050565b6000806040838503121561092c57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156103eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212202aeec704974e0a9e9e5fee8c8a0decb308cb0ba4f17e96a5a299bfa11ba04e1c64736f6c63430008130033","sourceMap":"242:576:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;987:253:45;;;;;;:::i;:::-;;:::i;:::-;;;1668:25:124;;;1656:2;1641:18;987:253:45;;;;;;;;452:451;;;;;;:::i;:::-;;:::i;:::-;;;2358:14:124;;2351:22;2333:41;;2321:2;2306:18;452:451:45;2193:187:124;1246:1168:45;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5179:952::-;;;;;;:::i;:::-;;:::i;407:409:44:-;;;;;;:::i;:::-;;:::i;3606:1421:45:-;;;;;;:::i;:::-;;:::i;987:253::-;1048:7;1089:1;1075:4;:11;:15;1067:63;;;;;;;4265:2:124;1067:63:45;;;4247:21:124;4304:2;4284:18;;;4277:30;4343:34;4323:18;;;4316:62;4414:5;4394:18;;;4387:33;4437:19;;1067:63:45;;;;;;;;;1160:1;1146:4;:11;:15;1140:70;;;1184:15;1194:4;1184:9;:15::i;:::-;1177:22;;1140:70;;;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;1219:14;;987:253;;;:::o;452:451::-;690:12;;556:4;;651:12;;556:4;736:115;756:6;752:1;:10;736:115;;;800:36;814:11;827:5;833:1;827:8;;;;;;;;:::i;:::-;;;;;;;800:13;:36::i;:::-;786:50;-1:-1:-1;764:3:45;;736:115;;;-1:-1:-1;;877:19:45;;;;452:451;-1:-1:-1;;;452:451:45:o;1246:1168::-;1322:16;1372:1;1358:4;:11;:15;1350:64;;;;;;;4858:2:124;1350:64:45;;;4840:21:124;4897:2;4877:18;;;4870:30;4936:34;4916:18;;;4909:62;5007:6;4987:18;;;4980:34;5031:19;;1350:64:45;4656:400:124;1350:64:45;1501:23;1541:29;1558:4;:11;1541:16;:29::i;:::-;1527:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1527:44:45;;1501:70;;1581:11;1910:475;1930:1;1916:4;:11;:15;1910:475;;;1978:4;1985:3;1978:10;1992:1;1978:15;1975:300;;2031:4;2043:1;2036:4;:8;2031:14;;;;;;;;:::i;:::-;;;;;;;2017:6;2024:3;2017:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;1975:300;;;2103:4;:11;2091:4;2098:1;2091:8;:23;2087:188;;2160:1;2152:10;;2138:6;2145:3;2138:11;;;;;;;;:::i;2087:188::-;2242:4;2247;2254:1;2247:8;2242:14;;;;;;;;:::i;:::-;;;;;;;2228:6;2235:3;2228:11;;;;;;;;:::i;:::-;;;;;;:28;;;;;2087:188;2292:5;;2323:1;2315:9;;;;2359:15;2369:4;2359:9;:15::i;:::-;2352:22;;1910:475;;;-1:-1:-1;2401:6:45;-1:-1:-1;1246:1168:45;;;;;:::o;5179:952::-;5237:7;5264:1;5259;:6;5255:45;;-1:-1:-1;5288:1:45;;5179:952;-1:-1:-1;5179:952:45:o;5255:45::-;5309:11;5347:1;5367:6;5362:11;;5358:75;;5395:3;5389:9;;;;5412:10;;;;:::i;:::-;;;5358:75;5451:5;5446:1;:10;5442:72;;5478:2;5472:8;;;;5494:9;;;;:::i;:::-;;;5442:72;5532:5;5527:1;:10;5523:72;;5559:2;5553:8;;;;5575:9;;;;:::i;:::-;;;5523:72;5613:5;5608:1;:10;5604:72;;5640:2;5634:8;;;;5656:9;;;;:::i;:::-;;;5604:72;5694:4;5689:1;:9;5685:69;;5720:1;5714:7;;;;5735:8;;;;:::i;:::-;;;5685:69;5772:4;5767:1;:9;5763:69;;5798:1;5792:7;;;;5813:8;;;;:::i;:::-;;;5763:69;5850:4;5845:1;:9;5841:69;;5876:1;5870:7;;;;5891:8;;;;:::i;:::-;;;5841:69;5928:4;5923:1;:9;5919:48;;5948:8;5955:1;5948:8;;:::i;:::-;;;5919:48;5977:11;6003:2;5992:7;:3;;5998:1;5992:7;:::i;:::-;5991:14;5977:28;;6027:2;6020:3;:9;6019:24;;;;;6041:1;6035:3;:7;6019:24;6015:110;;;-1:-1:-1;6066:3:45;;5179:952;-1:-1:-1;;;5179:952:45:o;6015:110::-;6107:7;:3;6113:1;6107:7;:::i;:::-;6100:14;5179:952;-1:-1:-1;;;;;5179:952:45:o;407:409:44:-;489:13;542:15;;;569:89;;;;707:4;702:3;695:17;741:5;735:4;728:19;535:225;;569:89;605:5;600:3;593:18;640:4;634;627:18;535:225;-1:-1:-1;;796:4:44;791:3;781:20;;407:409;-1:-1:-1;;407:409:44:o;3606:1421:45:-;3656:7;;4677:6;;4685:1;4673:14;4669:22;;4666:29;;4873:78;4880:5;;4873:78;;4911:1;4905:7;;;;4930:6;;;;;4873:78;;;4964:12;;;3606:1421;-1:-1:-1;;3606:1421:45:o;2493:990::-;2557:16;2585:23;2878:14;2895:4;:11;2878:28;;2924:6;2933:3;2924:12;2940:1;2924:17;2920:251;;2992:1;2983:6;:10;2996:1;2983:14;2969:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2969:29:45;;2960:38;;3044:43;3058:4;3072:1;3063:6;:10;3058:16;;;;;;;;:::i;:::-;;;;;;;3084:1;3076:10;;3044:13;:43::i;:::-;3016:6;3039:1;3023:6;:13;:17;3016:25;;;;;;;;:::i;:::-;;;;;;:71;;;;;2920:251;;;3158:1;3149:6;:10;3135:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3135:25:45;;3126:34;;2920:251;3273:11;3307:9;3302:142;3333:1;3326:6;:8;3322:1;:12;3302:142;;;3373:33;3387:4;3392:1;3387:7;;;;;;;;:::i;:::-;;;;;;;3396:4;3401:1;3403;3401:3;3396:9;;;;;;;;:::i;3373:33::-;3359:6;3366:3;3359:11;;;;;;;;:::i;:::-;;;;;;;;;;:47;3424:5;;;;;3339:1;3336:4;3302:142;;;-1:-1:-1;3470:6:45;;2493:990;-1:-1:-1;;;;2493:990:45:o;14:184:124:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:961;257:5;310:3;303:4;295:6;291:17;287:27;277:55;;328:1;325;318:12;277:55;364:6;351:20;390:4;413:18;450:2;446;443:10;440:36;;;456:18;;:::i;:::-;502:2;499:1;495:10;534:2;528:9;593:66;588:2;584;580:11;576:84;568:6;564:97;711:6;699:10;696:22;691:2;679:10;676:18;673:46;670:72;;;722:18;;:::i;:::-;758:2;751:22;808:18;;;884:15;;;880:24;;;842:15;;;;-1:-1:-1;916:15:124;;;913:35;;;944:1;941;934:12;913:35;980:2;972:6;968:15;957:26;;992:142;1008:6;1003:3;1000:15;992:142;;;1074:17;;1062:30;;1112:12;;;;1025;;;;992:142;;;1152:6;203:961;-1:-1:-1;;;;;;;203:961:124:o;1169:348::-;1253:6;1306:2;1294:9;1285:7;1281:23;1277:32;1274:52;;;1322:1;1319;1312:12;1274:52;1362:9;1349:23;1395:18;1387:6;1384:30;1381:50;;;1427:1;1424;1417:12;1381:50;1450:61;1503:7;1494:6;1483:9;1479:22;1450:61;:::i;:::-;1440:71;1169:348;-1:-1:-1;;;;1169:348:124:o;1704:484::-;1806:6;1814;1822;1875:2;1863:9;1854:7;1850:23;1846:32;1843:52;;;1891:1;1888;1881:12;1843:52;1927:9;1914:23;1904:33;;1988:2;1977:9;1973:18;1960:32;2015:18;2007:6;2004:30;2001:50;;;2047:1;2044;2037:12;2001:50;2070:61;2123:7;2114:6;2103:9;2099:22;2070:61;:::i;:::-;2060:71;;;2178:2;2167:9;2163:18;2150:32;2140:42;;1704:484;;;;;:::o;2385:416::-;2478:6;2486;2539:2;2527:9;2518:7;2514:23;2510:32;2507:52;;;2555:1;2552;2545:12;2507:52;2595:9;2582:23;2628:18;2620:6;2617:30;2614:50;;;2660:1;2657;2650:12;2614:50;2683:61;2736:7;2727:6;2716:9;2712:22;2683:61;:::i;:::-;2673:71;2791:2;2776:18;;;;2763:32;;-1:-1:-1;;;;2385:416:124:o;2806:632::-;2977:2;3029:21;;;3099:13;;3002:18;;;3121:22;;;2948:4;;2977:2;3200:15;;;;3174:2;3159:18;;;2948:4;3243:169;3257:6;3254:1;3251:13;3243:169;;;3318:13;;3306:26;;3387:15;;;;3352:12;;;;3279:1;3272:9;3243:169;;;-1:-1:-1;3429:3:124;;2806:632;-1:-1:-1;;;;;;2806:632:124:o;3443:180::-;3502:6;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;-1:-1:-1;3594:23:124;;3443:180;-1:-1:-1;3443:180:124:o;3810:248::-;3878:6;3886;3939:2;3927:9;3918:7;3914:23;3910:32;3907:52;;;3955:1;3952;3945:12;3907:52;-1:-1:-1;;3978:23:124;;;4048:2;4033:18;;;4020:32;;-1:-1:-1;3810:248:124:o;4467:184::-;4519:77;4516:1;4509:88;4616:4;4613:1;4606:15;4640:4;4637:1;4630:15;5250:279;5315:9;;;5336:10;;;5333:190;;;5379:77;5376:1;5369:88;5480:4;5477:1;5470:15;5508:4;5505:1;5498:15","linkReferences":{}},"methodIdentifiers":{"getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","hashLeafPairs(bytes32,bytes32)":"dd1d2599","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"dmfxyz\",\"details\":\"Note Generic Merkle Tree\",\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"hashLeafPairs(bytes32,bytes32)\":{\"notice\":\"ascending sort and concat prior to hashing\"},\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"notice\":\"Nascent, simple, kinda efficient (and improving!) Merkle proof generator and verifier\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/murky/src/Merkle.sol\":\"Merkle\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/murky/src/Merkle.sol\":{\"keccak256\":\"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74\",\"dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB\"]},\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"}},"version":1},"userdoc":{"kind":"user","methods":{"hashLeafPairs(bytes32,bytes32)":{"notice":"ascending sort and concat prior to hashing"},"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/murky/src/Merkle.sol":"Merkle"},"evmVersion":"paris","libraries":{}},"sources":{"lib/murky/src/Merkle.sol":{"keccak256":"0x70e50a6d61ea806b5ba0c8ff76fadfa3e90e6dfecb6900b1c0492eac0309660f","urls":["bzz-raw://b6cc1b02a6d11e029fe24d5d638ad891a3a2552aaef9d3a0918274b1496fcd74","dweb:/ipfs/QmWsU7yXsyKATkfYb8g1jbPTbgGsCg9rk7bJ3ypCYxQixB"],"license":"MIT"},"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"}},"version":1},"id":44} \ No newline at end of file diff --git a/out/MerkleProof.sol/MerkleProof.json b/out/MerkleProof.sol/MerkleProof.json new file mode 100644 index 0000000..8dfee80 --- /dev/null +++ b/out/MerkleProof.sol/MerkleProof.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122082901807006fde331f1e52c5deeb5736446c15cbbfae551a57fd3bd80ba122a864736f6c63430008130033","sourceMap":"802:8819:5:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;802:8819:5;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122082901807006fde331f1e52c5deeb5736446c15cbbfae551a57fd3bd80ba122a864736f6c63430008130033","sourceMap":"802:8819:5:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"These functions deal with verification of Merkle Tree proofs. The tree and the proofs can be generated using our https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. You will find a quickstart guide in the readme. WARNING: You should avoid using leaf values that are 64 bytes long prior to hashing, or use a hash function other than keccak256 for hashing leaves. This is because the concatenation of a sorted pair of internal nodes in the merkle tree could be reinterpreted as a leaf value. OpenZeppelin's JavaScript library generates merkle trees that are safe against this attack out of the box.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":\"MerkleProof\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":"MerkleProof"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"}},"version":1},"id":5} \ No newline at end of file diff --git a/out/Milkman.sol/IExpectedOutCalculator.json b/out/Milkman.sol/IExpectedOutCalculator.json new file mode 100644 index 0000000..cf086be --- /dev/null +++ b/out/Milkman.sol/IExpectedOutCalculator.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getExpectedOut","inputs":[{"name":"_amountIn","type":"uint256","internalType":"uint256"},{"name":"_fromToken","type":"address","internalType":"contract IERC20"},{"name":"_toToken","type":"address","internalType":"contract IERC20"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getExpectedOut(uint256,address,address,bytes)":"0d1003ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_fromToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_toToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getExpectedOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/vendored/Milkman.sol\":\"IExpectedOutCalculator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"contract IERC20","name":"_fromToken","type":"address"},{"internalType":"contract IERC20","name":"_toToken","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"view","type":"function","name":"getExpectedOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/vendored/Milkman.sol":"IExpectedOutCalculator"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/ModuleManager.sol/ModuleManager.json b/out/ModuleManager.sol/ModuleManager.json new file mode 100644 index 0000000..4db624f --- /dev/null +++ b/out/ModuleManager.sol/ModuleManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"disableModule","inputs":[{"name":"prevModule","type":"address","internalType":"address"},{"name":"module","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableModule","inputs":[{"name":"module","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execTransactionFromModule","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"execTransactionFromModuleReturnData","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"getModulesPaginated","inputs":[{"name":"start","type":"address","internalType":"address"},{"name":"pageSize","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"array","type":"address[]","internalType":"address[]"},{"name":"next","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isModuleEnabled","inputs":[{"name":"module","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"DisabledModule","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EnabledModule","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ExecutionFromModuleFailure","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ExecutionFromModuleSuccess","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"disableModule(address,address)":"e009cfde","enableModule(address)":"610b5925","execTransactionFromModule(address,uint256,bytes,uint8)":"468721a7","execTransactionFromModuleReturnData(address,uint256,bytes,uint8)":"5229073f","getModulesPaginated(address,uint256)":"cc2f8452","isModuleEnabled(address)":"2d9ad53d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"DisabledModule\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"EnabledModule\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"ExecutionFromModuleFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"ExecutionFromModuleSuccess\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"disableModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"enableModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execTransactionFromModule\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execTransactionFromModuleReturnData\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"start\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pageSize\",\"type\":\"uint256\"}],\"name\":\"getModulesPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"array\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"next\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"isModuleEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - @Georgi87Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{\"disableModule(address,address)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"module\":\"Module to be removed.\",\"prevModule\":\"Previous module in the modules linked list.\"}},\"enableModule(address)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"module\":\"Module to be whitelisted.\"}},\"execTransactionFromModule(address,uint256,bytes,uint8)\":{\"details\":\"Function is virtual to allow overriding for L2 singleton to emit an event for indexing.\",\"params\":{\"data\":\"Data payload of module transaction.\",\"operation\":\"Operation type of module transaction.\",\"to\":\"Destination address of module transaction.\",\"value\":\"Ether value of module transaction.\"},\"returns\":{\"success\":\"Boolean flag indicating if the call succeeded.\"}},\"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)\":{\"params\":{\"data\":\"Data payload of module transaction.\",\"operation\":\"Operation type of module transaction.\",\"to\":\"Destination address of module transaction.\",\"value\":\"Ether value of module transaction.\"},\"returns\":{\"returnData\":\"Data returned by the call.\",\"success\":\"Boolean flag indicating if the call succeeded.\"}},\"getModulesPaginated(address,uint256)\":{\"params\":{\"pageSize\":\"Maximum number of modules that should be returned. Has to be > 0\",\"start\":\"Start of the page. Has to be a module or start pointer (0x1 address)\"},\"returns\":{\"array\":\"Array of modules.\",\"next\":\"Start of the next page.\"}},\"isModuleEnabled(address)\":{\"returns\":{\"_0\":\"True if the module is enabled\"}}},\"title\":\"Module Manager - A contract managing Safe modules\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableModule(address,address)\":{\"notice\":\"Disables the module `module` for the Safe.\"},\"enableModule(address)\":{\"notice\":\"Enables the module `module` for the Safe.\"},\"execTransactionFromModule(address,uint256,bytes,uint8)\":{\"notice\":\"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token)\"},\"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)\":{\"notice\":\"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token) and return data\"},\"getModulesPaginated(address,uint256)\":{\"notice\":\"Returns an array of modules. If all entries fit into a single page, the next pointer will be 0x1. If another page is present, next will be the last element of the returned array.\"},\"isModuleEnabled(address)\":{\"notice\":\"Returns if an module is enabled\"}},\"notice\":\"Modules are extensions with unlimited access to a Safe that can be added to a Safe by its owners. \\u26a0\\ufe0f WARNING: Modules are a security risk since they can execute arbitrary transactions, so only trusted and audited modules should be added to a Safe. A malicious module can completely takeover a Safe.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/base/ModuleManager.sol\":\"ModuleManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"DisabledModule","anonymous":false},{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"EnabledModule","anonymous":false},{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"ExecutionFromModuleFailure","anonymous":false},{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"ExecutionFromModuleSuccess","anonymous":false},{"inputs":[{"internalType":"address","name":"prevModule","type":"address"},{"internalType":"address","name":"module","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableModule"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"enableModule"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"execTransactionFromModule","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"execTransactionFromModuleReturnData","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"start","type":"address"},{"internalType":"uint256","name":"pageSize","type":"uint256"}],"stateMutability":"view","type":"function","name":"getModulesPaginated","outputs":[{"internalType":"address[]","name":"array","type":"address[]"},{"internalType":"address","name":"next","type":"address"}]},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"stateMutability":"view","type":"function","name":"isModuleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"disableModule(address,address)":{"details":"This can only be done via a Safe transaction.","params":{"module":"Module to be removed.","prevModule":"Previous module in the modules linked list."}},"enableModule(address)":{"details":"This can only be done via a Safe transaction.","params":{"module":"Module to be whitelisted."}},"execTransactionFromModule(address,uint256,bytes,uint8)":{"details":"Function is virtual to allow overriding for L2 singleton to emit an event for indexing.","params":{"data":"Data payload of module transaction.","operation":"Operation type of module transaction.","to":"Destination address of module transaction.","value":"Ether value of module transaction."},"returns":{"success":"Boolean flag indicating if the call succeeded."}},"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)":{"params":{"data":"Data payload of module transaction.","operation":"Operation type of module transaction.","to":"Destination address of module transaction.","value":"Ether value of module transaction."},"returns":{"returnData":"Data returned by the call.","success":"Boolean flag indicating if the call succeeded."}},"getModulesPaginated(address,uint256)":{"params":{"pageSize":"Maximum number of modules that should be returned. Has to be > 0","start":"Start of the page. Has to be a module or start pointer (0x1 address)"},"returns":{"array":"Array of modules.","next":"Start of the next page."}},"isModuleEnabled(address)":{"returns":{"_0":"True if the module is enabled"}}},"version":1},"userdoc":{"kind":"user","methods":{"disableModule(address,address)":{"notice":"Disables the module `module` for the Safe."},"enableModule(address)":{"notice":"Enables the module `module` for the Safe."},"execTransactionFromModule(address,uint256,bytes,uint8)":{"notice":"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token)"},"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)":{"notice":"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token) and return data"},"getModulesPaginated(address,uint256)":{"notice":"Returns an array of modules. If all entries fit into a single page, the next pointer will be 0x1. If another page is present, next will be the last element of the returned array."},"isModuleEnabled(address)":{"notice":"Returns if an module is enabled"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/base/ModuleManager.sol":"ModuleManager"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"}},"version":1},"id":50} \ No newline at end of file diff --git a/out/MultiSend.sol/MultiSend.json b/out/MultiSend.sol/MultiSend.json new file mode 100644 index 0000000..8c9e592 --- /dev/null +++ b/out/MultiSend.sol/MultiSend.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"multiSend","inputs":[{"name":"transactions","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"}],"bytecode":{"object":"0x60a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033","sourceMap":"338:3110:75:-:0;;;414:65;;;;;;;;;-1:-1:-1;467:4:75;438:34;;338:3110;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033","sourceMap":"338:3110:75:-:0;;;;;;;;;;;;;;;;;;;;;1286:2160;;;;;;:::i;:::-;;:::i;:::-;;;1365:35;1382:18;1365:35;1373:4;1365:35;1357:96;;;;;;;1390:2:124;1357:96:75;;;1372:21:124;1429:2;1409:18;;;1402:30;1468:34;1448:18;;;1441:62;1539:18;1519;;;1512:46;1575:19;;1357:96:75;;;;;;;;1562:12;1556:19;1597:4;1614:1816;1697:6;1694:1;1691:13;1614:1816;;;2088:1;2074:12;2070:20;2064:27;2058:4;2054:38;2362:4;2359:1;2355:12;2341;2337:31;2331:38;2325:4;2321:49;2524:4;2521:1;2517:12;2503;2499:31;2493:38;2707:4;2704:1;2700:12;2686;2682:31;2676:38;2901:4;2898:1;2894:12;2880;2876:31;2939:1;2964:9;2995:1;2990:104;;;;3116:1;3111:105;;;;2957:259;;2990:104;3074:1;3071;3059:10;3053:4;3046:5;3042:2;3035:5;3030:46;3019:57;;2990:104;;3111:105;3196:1;3193;3181:10;3175:4;3171:2;3164:5;3151:47;3140:58;;2957:259;-1:-1:-1;3239:7:75;3233:70;;3283:1;3280;3273:12;3233:70;;;3404:10;3398:4;3394:21;3391:1;3387:29;3382:34;;;;;;1614:1816;;;1618:72;;1286:2160;:::o;14:184:124:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:980;271:6;324:2;312:9;303:7;299:23;295:32;292:52;;;340:1;337;330:12;292:52;380:9;367:23;409:18;450:2;442:6;439:14;436:34;;;466:1;463;456:12;436:34;504:6;493:9;489:22;479:32;;549:7;542:4;538:2;534:13;530:27;520:55;;571:1;568;561:12;520:55;607:2;594:16;629:2;625;622:10;619:36;;;635:18;;:::i;:::-;769:2;763:9;831:4;823:13;;674:66;819:22;;;843:2;815:31;811:40;799:53;;;867:18;;;887:22;;;864:46;861:72;;;913:18;;:::i;:::-;953:10;949:2;942:22;988:2;980:6;973:18;1028:7;1023:2;1018;1014;1010:11;1006:20;1003:33;1000:53;;;1049:1;1046;1039:12;1000:53;1105:2;1100;1096;1092:11;1087:2;1079:6;1075:15;1062:46;1150:1;1128:15;;;1145:2;1124:24;1117:35;;;;-1:-1:-1;1132:6:124;203:980;-1:-1:-1;;;;;203:980:124:o","linkReferences":{},"immutableReferences":{"39623":[{"start":79,"length":32}]}},"methodIdentifiers":{"multiSend(bytes)":"8d80ff0a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"multiSend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Nick Dodson - Gon\\u00e7alo S\\u00e1 - Stefan George - @Georgi87Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{\"multiSend(bytes)\":{\"details\":\"Sends multiple transactions and reverts all if one fails.\",\"params\":{\"transactions\":\"Encoded transactions. Each transaction is encoded as a packed bytes of operation as a uint8 with 0 for a call or 1 for a delegatecall (=> 1 byte), to as a address (=> 20 bytes), value as a uint256 (=> 32 bytes), data length as a uint256 (=> 32 bytes), data as bytes. see abi.encodePacked for more information on packed encoding\"}}},\"title\":\"Multi Send - Allows to batch multiple transactions into one.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"multiSend(bytes)\":{\"notice\":\"This method is payable as delegatecalls keep the msg.value from the previous call If the calling method (e.g. execTransaction) received ETH this would revert otherwise\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/libraries/MultiSend.sol\":\"MultiSend\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"transactions","type":"bytes"}],"stateMutability":"payable","type":"function","name":"multiSend"}],"devdoc":{"kind":"dev","methods":{"multiSend(bytes)":{"details":"Sends multiple transactions and reverts all if one fails.","params":{"transactions":"Encoded transactions. Each transaction is encoded as a packed bytes of operation as a uint8 with 0 for a call or 1 for a delegatecall (=> 1 byte), to as a address (=> 20 bytes), value as a uint256 (=> 32 bytes), data length as a uint256 (=> 32 bytes), data as bytes. see abi.encodePacked for more information on packed encoding"}}},"version":1},"userdoc":{"kind":"user","methods":{"multiSend(bytes)":{"notice":"This method is payable as delegatecalls keep the msg.value from the previous call If the calling method (e.g. execTransaction) received ETH this would revert otherwise"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/libraries/MultiSend.sol":"MultiSend"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"}},"version":1},"id":75} \ No newline at end of file diff --git a/out/MurkyBase.sol/MurkyBase.json b/out/MurkyBase.sol/MurkyBase.json new file mode 100644 index 0000000..d14e81e --- /dev/null +++ b/out/MurkyBase.sol/MurkyBase.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getProof","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"},{"name":"node","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getRoot","inputs":[{"name":"data","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"hashLeafPairs","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"log2ceil","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"log2ceilBitMagic","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"verifyProof","inputs":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"valueToProve","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getProof(bytes32[],uint256)":"b8616195","getRoot(bytes32[])":"2e08d602","hashLeafPairs(bytes32,bytes32)":"dd1d2599","log2ceil(uint256)":"e27d5153","log2ceilBitMagic(uint256)":"cf06c7b7","verifyProof(bytes32,bytes32[],bytes32)":"58161a42"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"node\",\"type\":\"uint256\"}],\"name\":\"getProof\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"getRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"hashLeafPairs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"log2ceilBitMagic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"valueToProve\",\"type\":\"bytes32\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"log2ceil(uint256)\":{\"details\":\"Note that x is assumed > 0\"},\"log2ceilBitMagic(uint256)\":{\"details\":\"Note that x assumed > 1\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"log2ceilBitMagic(uint256)\":{\"notice\":\"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/murky/src/common/MurkyBase.sol\":\"MurkyBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/murky/src/common/MurkyBase.sol\":{\"keccak256\":\"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b\",\"dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"node","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"hashLeafPairs","outputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"log2ceilBitMagic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"valueToProve","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"log2ceil(uint256)":{"details":"Note that x is assumed > 0"},"log2ceilBitMagic(uint256)":{"details":"Note that x assumed > 1"}},"version":1},"userdoc":{"kind":"user","methods":{"log2ceilBitMagic(uint256)":{"notice":"Original bitmagic adapted from https://github.com/paulrberg/prb-math/blob/main/contracts/PRBMath.sol"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/murky/src/common/MurkyBase.sol":"MurkyBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/murky/src/common/MurkyBase.sol":{"keccak256":"0x5287741b2b215c9a11cc8482b419abde0625dfc3949d539c72ee498108842894","urls":["bzz-raw://259e803b0811e404bba09237bce4ef42f2ff27dacaca770d1eb7c1afddbf762b","dweb:/ipfs/QmWfbsHa1siBxDEqFmbnzUuZqyitFZHmDXo2vc4cVn4uJe"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file diff --git a/out/NativeCurrencyPaymentFallback.sol/NativeCurrencyPaymentFallback.json b/out/NativeCurrencyPaymentFallback.sol/NativeCurrencyPaymentFallback.json new file mode 100644 index 0000000..5a7624f --- /dev/null +++ b/out/NativeCurrencyPaymentFallback.sol/NativeCurrencyPaymentFallback.json @@ -0,0 +1 @@ +{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"event","name":"SafeReceived","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeReceived\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"NativeCurrencyPaymentFallback - A contract that has a fallback to accept native currency payments.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":\"NativeCurrencyPaymentFallback\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"SafeReceived","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":"NativeCurrencyPaymentFallback"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"}},"version":1},"id":53} \ No newline at end of file diff --git a/out/OwnerManager.sol/OwnerManager.json b/out/OwnerManager.sol/OwnerManager.json new file mode 100644 index 0000000..7c6833a --- /dev/null +++ b/out/OwnerManager.sol/OwnerManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addOwnerWithThreshold","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"_threshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeThreshold","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getOwners","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeOwner","inputs":[{"name":"prevOwner","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"},{"name":"_threshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapOwner","inputs":[{"name":"prevOwner","type":"address","internalType":"address"},{"name":"oldOwner","type":"address","internalType":"address"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddedOwner","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ChangedThreshold","inputs":[{"name":"threshold","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RemovedOwner","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addOwnerWithThreshold(address,uint256)":"0d582f13","changeThreshold(uint256)":"694e80c3","getOwners()":"a0e67e2b","getThreshold()":"e75235b8","isOwner(address)":"2f54bf6e","removeOwner(address,address,uint256)":"f8dc5dd9","swapOwner(address,address,address)":"e318b52b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"AddedOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"ChangedThreshold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RemovedOwner\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"addOwnerWithThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"changeThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"removeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"swapOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - @Georgi87Richard Meissner - @rmeissner\",\"details\":\"Uses a linked list to store the owners because the code generate by the solidity compiler is more efficient than using a dynamic array.\",\"kind\":\"dev\",\"methods\":{\"addOwnerWithThreshold(address,uint256)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"_threshold\":\"New threshold.\",\"owner\":\"New owner address.\"}},\"changeThreshold(uint256)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"_threshold\":\"New threshold.\"}},\"getOwners()\":{\"returns\":{\"_0\":\"Array of Safe owners.\"}},\"getThreshold()\":{\"returns\":{\"_0\":\"Threshold number.\"}},\"isOwner(address)\":{\"returns\":{\"_0\":\"Boolean if owner is an owner of the Safe.\"}},\"removeOwner(address,address,uint256)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"_threshold\":\"New threshold.\",\"owner\":\"Owner address to be removed.\",\"prevOwner\":\"Owner that pointed to the owner to be removed in the linked list\"}},\"swapOwner(address,address,address)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"newOwner\":\"New owner address.\",\"oldOwner\":\"Owner address to be replaced.\",\"prevOwner\":\"Owner that pointed to the owner to be replaced in the linked list\"}}},\"title\":\"OwnerManager - Manages Safe owners and a threshold to authorize transactions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addOwnerWithThreshold(address,uint256)\":{\"notice\":\"Adds the owner `owner` to the Safe and updates the threshold to `_threshold`.\"},\"changeThreshold(uint256)\":{\"notice\":\"Changes the threshold of the Safe to `_threshold`.\"},\"getOwners()\":{\"notice\":\"Returns a list of Safe owners.\"},\"getThreshold()\":{\"notice\":\"Returns the number of required confirmations for a Safe transaction aka the threshold.\"},\"isOwner(address)\":{\"notice\":\"Returns if `owner` is an owner of the Safe.\"},\"removeOwner(address,address,uint256)\":{\"notice\":\"Removes the owner `owner` from the Safe and updates the threshold to `_threshold`.\"},\"swapOwner(address,address,address)\":{\"notice\":\"Replaces the owner `oldOwner` in the Safe with `newOwner`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/base/OwnerManager.sol\":\"OwnerManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"AddedOwner","anonymous":false},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256","indexed":false}],"type":"event","name":"ChangedThreshold","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RemovedOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addOwnerWithThreshold"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"changeThreshold"},{"inputs":[],"stateMutability":"view","type":"function","name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeOwner"},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"oldOwner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"swapOwner"}],"devdoc":{"kind":"dev","methods":{"addOwnerWithThreshold(address,uint256)":{"details":"This can only be done via a Safe transaction.","params":{"_threshold":"New threshold.","owner":"New owner address."}},"changeThreshold(uint256)":{"details":"This can only be done via a Safe transaction.","params":{"_threshold":"New threshold."}},"getOwners()":{"returns":{"_0":"Array of Safe owners."}},"getThreshold()":{"returns":{"_0":"Threshold number."}},"isOwner(address)":{"returns":{"_0":"Boolean if owner is an owner of the Safe."}},"removeOwner(address,address,uint256)":{"details":"This can only be done via a Safe transaction.","params":{"_threshold":"New threshold.","owner":"Owner address to be removed.","prevOwner":"Owner that pointed to the owner to be removed in the linked list"}},"swapOwner(address,address,address)":{"details":"This can only be done via a Safe transaction.","params":{"newOwner":"New owner address.","oldOwner":"Owner address to be replaced.","prevOwner":"Owner that pointed to the owner to be replaced in the linked list"}}},"version":1},"userdoc":{"kind":"user","methods":{"addOwnerWithThreshold(address,uint256)":{"notice":"Adds the owner `owner` to the Safe and updates the threshold to `_threshold`."},"changeThreshold(uint256)":{"notice":"Changes the threshold of the Safe to `_threshold`."},"getOwners()":{"notice":"Returns a list of Safe owners."},"getThreshold()":{"notice":"Returns the number of required confirmations for a Safe transaction aka the threshold."},"isOwner(address)":{"notice":"Returns if `owner` is an owner of the Safe."},"removeOwner(address,address,uint256)":{"notice":"Removes the owner `owner` from the Safe and updates the threshold to `_threshold`."},"swapOwner(address,address,address)":{"notice":"Replaces the owner `oldOwner` in the Safe with `newOwner`."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/base/OwnerManager.sol":"OwnerManager"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"}},"version":1},"id":51} \ No newline at end of file diff --git a/out/ReentrancyGuard.sol/ReentrancyGuard.json b/out/ReentrancyGuard.sol/ReentrancyGuard.json new file mode 100644 index 0000000..1ebfdbb --- /dev/null +++ b/out/ReentrancyGuard.sol/ReentrancyGuard.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":"ReentrancyGuard"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/out/Safe.sol/Safe.json b/out/Safe.sol/Safe.json new file mode 100644 index 0000000..278551f --- /dev/null +++ b/out/Safe.sol/Safe.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"addOwnerWithThreshold","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"_threshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveHash","inputs":[{"name":"hashToApprove","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approvedHashes","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"changeThreshold","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkNSignatures","inputs":[{"name":"dataHash","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signatures","type":"bytes","internalType":"bytes"},{"name":"requiredSignatures","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"checkSignatures","inputs":[{"name":"dataHash","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"signatures","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"disableModule","inputs":[{"name":"prevModule","type":"address","internalType":"address"},{"name":"module","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"enableModule","inputs":[{"name":"module","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"encodeTransactionData","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"},{"name":"safeTxGas","type":"uint256","internalType":"uint256"},{"name":"baseGas","type":"uint256","internalType":"uint256"},{"name":"gasPrice","type":"uint256","internalType":"uint256"},{"name":"gasToken","type":"address","internalType":"address"},{"name":"refundReceiver","type":"address","internalType":"address"},{"name":"_nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"execTransaction","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"},{"name":"safeTxGas","type":"uint256","internalType":"uint256"},{"name":"baseGas","type":"uint256","internalType":"uint256"},{"name":"gasPrice","type":"uint256","internalType":"uint256"},{"name":"gasToken","type":"address","internalType":"address"},{"name":"refundReceiver","type":"address","internalType":"address payable"},{"name":"signatures","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"payable"},{"type":"function","name":"execTransactionFromModule","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"execTransactionFromModuleReturnData","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getModulesPaginated","inputs":[{"name":"start","type":"address","internalType":"address"},{"name":"pageSize","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"array","type":"address[]","internalType":"address[]"},{"name":"next","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOwners","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getStorageAt","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTransactionHash","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"enum Enum.Operation"},{"name":"safeTxGas","type":"uint256","internalType":"uint256"},{"name":"baseGas","type":"uint256","internalType":"uint256"},{"name":"gasPrice","type":"uint256","internalType":"uint256"},{"name":"gasToken","type":"address","internalType":"address"},{"name":"refundReceiver","type":"address","internalType":"address"},{"name":"_nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isModuleEnabled","inputs":[{"name":"module","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"removeOwner","inputs":[{"name":"prevOwner","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"},{"name":"_threshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFallbackHandler","inputs":[{"name":"handler","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGuard","inputs":[{"name":"guard","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setup","inputs":[{"name":"_owners","type":"address[]","internalType":"address[]"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"fallbackHandler","type":"address","internalType":"address"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"paymentReceiver","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signedMessages","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"simulateAndRevert","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapOwner","inputs":[{"name":"prevOwner","type":"address","internalType":"address"},{"name":"oldOwner","type":"address","internalType":"address"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddedOwner","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ApproveHash","inputs":[{"name":"approvedHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ChangedFallbackHandler","inputs":[{"name":"handler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ChangedGuard","inputs":[{"name":"guard","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ChangedThreshold","inputs":[{"name":"threshold","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DisabledModule","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EnabledModule","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ExecutionFailure","inputs":[{"name":"txHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"payment","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExecutionFromModuleFailure","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ExecutionFromModuleSuccess","inputs":[{"name":"module","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ExecutionSuccess","inputs":[{"name":"txHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"payment","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RemovedOwner","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SafeReceived","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SafeSetup","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"owners","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"threshold","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"initializer","type":"address","indexed":false,"internalType":"address"},{"name":"fallbackHandler","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SignMsg","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033","sourceMap":"1919:19946:46:-:0;;;3700:271;;;;;;;;;-1:-1:-1;3963:1:46;3951:9;:13;1919:19946;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033","sourceMap":"1919:19946:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:35:53;;563:9;160:25:124;;551:10:53;;538:35;;148:2:124;133:18;538:35:53;;;;;;;1919:19946:46;;;;;;;;;;;-1:-1:-1;479:66:48;3341:11;;;3365:63;;3402:12;3365:63;3460:14;3457:1;3454;3441:34;3697:8;3693:2;3689:17;3673:14;3666:41;3855:1;3852;3847:2;3831:14;3827:23;3824:1;3821;3812:7;3805:5;3800:57;3785:72;;3891:16;3888:1;3885;3870:38;3931:7;3921:78;;3968:16;3965:1;3958:27;3921:78;;4022:16;4019:1;4012:27;2399:625:51;;;;;;;;;;-1:-1:-1;2399:625:51;;;;;:::i;:::-;;:::i;:::-;;13892:3837:46;;;;;;;;;;-1:-1:-1;13892:3837:46;;;;;:::i;:::-;;:::i;5780:151:50:-;;;;;;;;;;-1:-1:-1;5780:151:50;;;;;:::i;:::-;;:::i;:::-;;;2883:14:124;;2876:22;2858:41;;2846:2;2831:18;5780:151:50;;;;;;;;6140:138:51;;;;;;;;;;-1:-1:-1;6140:138:51;;;;;:::i;:::-;;:::i;18522:211:46:-;;;;;;;;;;-1:-1:-1;18689:9:46;18522:211;;;160:25:124;;;148:2;133:18;18522:211:46;14:177:124;3622:594:50;;;;;;;;;;-1:-1:-1;3622:594:50;;;;;:::i;:::-;;:::i;4707:959::-;;;;;;;;;;-1:-1:-1;4707:959:50;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;785:464:58:-;;;;;;;;;;-1:-1:-1;785:464:58;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3360:49:46:-;;;;;;;;;;-1:-1:-1;3360:49:46;;;;;:::i;:::-;;;;;;;;;;;;;;2001:426:50;;;;;;;;;;-1:-1:-1;2001:426:50;;;;;:::i;:::-;;:::i;5398:360:51:-;;;;;;;;;;-1:-1:-1;5398:360:51;;;;;:::i;:::-;;:::i;7433:3556:46:-;;;;;;:::i;:::-;;:::i;3521:69::-;;;;;;;;;;-1:-1:-1;3521:69:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;12858:353;;;;;;;;;;-1:-1:-1;12858:353:46;;;;;:::i;:::-;;:::i;6383:437:51:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3188:20:46:-;;;;;;;;;;;;;;;;1882:486:58;;;;;;;;;;-1:-1:-1;1882:486:58;;;;;:::i;:::-;;:::i;4740:1151:46:-;;;;;;;;;;-1:-1:-1;4740:1151:46;;;;;:::i;:::-;;:::i;6437:1535:50:-;;;;;;;;;;-1:-1:-1;6437:1535:50;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;18133:228:46:-;;;;;;;;;;-1:-1:-1;18133:228:46;;;;;:::i;:::-;;:::i;21385:478::-;;;;;;;;;;-1:-1:-1;21385:478:46;;;;;:::i;:::-;;:::i;2677:423:50:-;;;;;;;;;;-1:-1:-1;2677:423:50;;;;;:::i;:::-;;:::i;1962:386:49:-;;;;;;;;;;-1:-1:-1;1962:386:49;;;;;:::i;:::-;;:::i;4416:796:51:-;;;;;;;;;;-1:-1:-1;4416:796:51;;;;;:::i;:::-;;:::i;5915:87::-;;;;;;;;;;-1:-1:-1;5986:9:51;;5915:87;;19858:822:46;;;;;;;;;;-1:-1:-1;19858:822:46;;;;;:::i;:::-;;:::i;2437:161:48:-;;;;;;;;;;-1:-1:-1;2437:161:48;;;;;:::i;:::-;;:::i;18901:149:46:-;;;;;;;;;;;;18949:7;2402:66;18689:9;18985:57;;;;;;30709:25:124;;;;30750:18;;30743:34;19037:4:46;30793:18:124;;;30786:83;30682:18;;18985:57:46;;;;;;;;;;;;18975:68;;;;;;18968:75;;18901:149;;3380:697:51;;;;;;;;;;-1:-1:-1;3380:697:51;;;;;:::i;:::-;;:::i;2205:40:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2399:625:51;505:17:55;:15;:17::i;:::-;2575:19:51::1;::::0;::::1;::::0;;::::1;::::0;:47:::1;;-1:-1:-1::0;2598:24:51::1;::::0;::::1;687:3;2598:24;;2575:47;:73;;;;-1:-1:-1::0;2626:22:51::1;::::0;::::1;2643:4;2626:22;;2575:73;2567:91;;;::::0;-1:-1:-1;;;2567:91:51;;14200:2:124;2567:91:51::1;::::0;::::1;14182:21:124::0;14239:1;14219:18;;;14212:29;14277:7;14257:18;;;14250:35;14302:18;;2567:91:51::1;;;;;;;;;2716:27;:13:::0;;::::1;2741:1;2716:13:::0;;;:6:::1;:13;::::0;;;;;::::1;:27:::0;2708:45:::1;;;::::0;-1:-1:-1;;;2708:45:51;;14533:2:124;2708:45:51::1;::::0;::::1;14515:21:124::0;14572:1;14552:18;;;14545:29;14610:7;14590:18;;;14583:35;14635:18;;2708:45:51::1;14331:328:124::0;2708:45:51::1;2779:6;:23;::::0;;;;::::1;2763:13:::0;;::::1;2779:23;2763:13:::0;;;2779:23;2763:13;;:39;;2779:23;;;::::1;2763:39:::0;;;::::1;;::::0;;;-1:-1:-1;2812:23:51;;:31;;;;::::1;;::::0;;;2853:10:::1;:12:::0;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;2880:17:51::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;2978:10;2965:9;;:23;2961:56;;2990:27;3006:10;2990:15;:27::i;:::-;2399:625:::0;;:::o;13892:3837:46:-;14126:26;:18;14149:2;14126:22;:26::i;:::-;14105:10;:17;:47;;14097:65;;;;-1:-1:-1;;;14097:65:46;;15255:2:124;14097:65:46;;;15237:21:124;15294:1;15274:18;;;15267:29;15332:7;15312:18;;;15305:35;15357:18;;14097:65:46;15053:328:124;14097:65:46;14224:17;14264:20;14294:7;14311:9;14330;14349;14368:3355;14384:18;14380:1;:22;14368:3355;;;1176:4:56;1172:14;;;1210:40;;1244:4;1210:40;;1204:47;1309:4;1275:40;;1269:47;1627:40;;;;1621:47;1670:4;1617:58;;-1:-1:-1;1204:47:56;;-1:-1:-1;1269:47:56;-1:-1:-1;14487:1:46;14482:6;;;14478:3068;;14516:15;;;;;;:27;;14508:45;;;;-1:-1:-1;;;14508:45:46;;15588:2:124;14508:45:46;;;15570:21:124;15627:1;15607:18;;;15600:29;15665:7;15645:18;;;15638:35;15690:18;;14508:45:46;15386:328:124;14508:45:46;14770:1;;-1:-1:-1;14770:1:46;;15175:26;:18;15198:2;15175:22;:26::i;:::-;15161:40;;;15153:58;;;;-1:-1:-1;;;15153:58:46;;15921:2:124;15153:58:46;;;15903:21:124;15960:1;15940:18;;;15933:29;15998:7;15978:18;;;15971:35;16023:18;;15153:58:46;15719:328:124;15153:58:46;15373:17;;15351:18;15359:1;15366:2;15351:14;:18::i;:::-;:39;;15343:57;;;;-1:-1:-1;;;15343:57:46;;16254:2:124;15343:57:46;;;16236:21:124;16293:1;16273:18;;;16266:29;16331:7;16311:18;;;16304:35;16356:18;;15343:57:46;16052:328:124;15343:57:46;15739:4;15719:18;;;15715:29;;15709:36;15836:17;;15709:36;;15788:44;;15709:36;;15788:18;;15719;;15788:14;:18::i;:::-;:22;;:44::i;:::-;:65;;15780:83;;;;-1:-1:-1;;;15780:83:46;;16587:2:124;15780:83:46;;;16569:21:124;16626:1;16606:18;;;16599:29;16664:7;16644:18;;;16637:35;16689:18;;15780:83:46;16385:328:124;15780:83:46;16292:75;;16371:19;16292:75;;;16224:18;;;16244:4;16220:29;;16292:50;;;;223:10:74;;16292:75:46;;16343:4;;16220:29;;16292:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:98;;;16284:116;;;;-1:-1:-1;;;16284:116:46;;17643:2:124;16284:116:46;;;17625:21:124;17682:1;17662:18;;;17655:29;17720:7;17700:18;;;17693:35;17745:18;;16284:116:46;17441:328:124;16284:116:46;14490:1925;;14478:3068;;;16425:1;:6;;16430:1;16425:6;16421:1125;;16642:1;;-1:-1:-1;16642:1:46;;16817:10;:26;;;;;:73;;-1:-1:-1;16847:28:46;;;;;;;:14;:28;;;;;;;;:38;;;;;;;;;:43;;16817:73;16809:91;;;;-1:-1:-1;;;16809:91:46;;17976:2:124;16809:91:46;;;17958:21:124;18015:1;17995:18;;;17988:29;18053:7;18033:18;;;18026:35;18078:18;;16809:91:46;17774:328:124;16809:91:46;16421:1125;;;16929:2;16925:1;:6;;;16921:625;;;17222:62;;18349:66:124;17222:62:46;;;18337:79:124;18432:12;;;18425:28;;;17202:97:46;;18469:12:124;;17222:62:46;;;;;;;;;;;;17212:73;;;;;;17291:1;17287;:5;;;;:::i;:::-;17202:97;;;;;;;;;;;;18875:25:124;;;;18948:4;18936:17;;;18916:18;;;18909:45;18970:18;;;18963:34;;;19013:18;;;19006:34;;;18847:19;;17202:97:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17187:112;;16921:625;;;17503:28;;;;;;;;;;;;18875:25:124;;;18948:4;18936:17;;18916:18;;;18909:45;;;;18970:18;;;18963:34;;;19013:18;;;19006:34;;;17503:28:46;;18847:19:124;;17503:28:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17488:43;;16921:625;17582:9;17567:24;;:12;:24;;;:62;;;;-1:-1:-1;17595:34:46;:20;;;17627:1;17595:20;;;:6;:20;;;;;;;:34;;17567:62;:97;;;;-1:-1:-1;17633:31:46;;;687:3:51;17633:31:46;;17567:97;17559:115;;;;-1:-1:-1;;;17559:115:46;;19253:2:124;17559:115:46;;;19235:21:124;19292:1;19272:18;;;19265:29;19330:7;19310:18;;;19303:35;19355:18;;17559:115:46;19051:328:124;17559:115:46;17700:12;17688:24;;14404:3;;;;;:::i;:::-;;;;14368:3355;;;14020:3709;;;;;;13892:3837;;;;:::o;5780:151:50:-;5842:4;1005:3;5865:26;;;;;;;:59;;-1:-1:-1;5895:29:50;:15;;;5922:1;5895:15;;;:7;:15;;;;;;;:29;;5865:59;5858:66;5780:151;-1:-1:-1;;5780:151:50:o;6140:138:51:-;6193:4;6216:24;;;687:3;6216:24;;;;:55;;-1:-1:-1;;6244:27:51;:13;;;6269:1;6244:13;;;:6;:13;;;;;;;:27;;;6140:138::o;3622:594:50:-;3791:12;3872:10;1005:3;3872:30;;;;:67;;-1:-1:-1;3914:10:50;3937:1;3906:19;;;:7;:19;;;;;;:33;:19;:33;;3872:67;3864:85;;;;-1:-1:-1;;;3864:85:50;;19586:2:124;3864:85:50;;;19568:21:124;19625:1;19605:18;;;19598:29;19663:7;19643:18;;;19636:35;19688:18;;3864:85:50;19384:328:124;3864:85:50;4031:54;4039:2;4043:5;4050:4;4056:9;4067:17;4031:7;:54::i;:::-;4021:64;;4099:7;4095:114;;;4113:38;;4140:10;;4113:38;;;;;4095:114;;;4171:38;;4198:10;;4171:38;;;;;4095:114;3622:594;;;;;;:::o;4707:959::-;4878:12;4892:23;4937:53;4963:2;4967:5;4974:4;4980:9;4937:25;:53::i;:::-;4927:63;;5137:4;5131:11;5379:4;5361:16;5357:27;5352:3;5348:37;5342:4;5335:51;5441:16;5436:3;5429:29;5535:16;5532:1;5525:4;5520:3;5516:14;5501:51;5647:3;5633:17;;;4707:959;;;;;;;:::o;785:464:58:-;860:12;884:19;916:11;:6;925:2;916:11;:::i;:::-;906:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;906:22:58;;884:44;;943:13;938:282;970:6;962:5;:14;938:282;;;1106:18;;;1100:25;1183:4;1172:16;;;1149:40;;;1142:54;1118:5;978:7;1118:5;978:7;:::i;:::-;;;;938:282;;;-1:-1:-1;1236:6:58;785:464;-1:-1:-1;;;785:464:58:o;2001:426:50:-;505:17:55;:15;:17::i;:::-;2129:20:50::1;::::0;::::1;::::0;;::::1;::::0;:50:::1;;-1:-1:-1::0;2153:26:50::1;::::0;::::1;1005:3;2153:26;;2129:50;2121:68;;;::::0;-1:-1:-1;;;2121:68:50;;20092:2:124;2121:68:50::1;::::0;::::1;20074:21:124::0;20131:1;20111:18;;;20104:29;20169:7;20149:18;;;20142:35;20194:18;;2121:68:50::1;19890:328:124::0;2121:68:50::1;2248:29;:15:::0;;::::1;2275:1;2248:15:::0;;;:7:::1;:15;::::0;;;;;::::1;:29:::0;2240:47:::1;;;::::0;-1:-1:-1;;;2240:47:50;;20425:2:124;2240:47:50::1;::::0;::::1;20407:21:124::0;20464:1;20444:18;;;20437:29;20502:7;20482:18;;;20475:35;20527:18;;2240:47:50::1;20223:328:124::0;2240:47:50::1;2315:7;:25;::::0;;;;;;::::1;2297:15:::0;;::::1;2315:25;2297:15:::0;;;2315:25;2297:15;;;:43;;2315:25;;;::::1;2297:43:::0;;;::::1;;::::0;;;2350:25;;;:34;;;;::::1;::::0;::::1;::::0;;;2399:21;2297:15;;2399:21:::1;::::0;::::1;2001:426:::0;:::o;5398:360:51:-;505:17:55;:15;:17::i;:::-;5562:10:51::1;;5548;:24;;5540:42;;;::::0;-1:-1:-1;;;5540:42:51;;20758:2:124;5540:42:51::1;::::0;::::1;20740:21:124::0;20797:1;20777:18;;;20770:29;20835:7;20815:18;;;20808:35;20860:18;;5540:42:51::1;20556:328:124::0;5540:42:51::1;5666:1;5652:10;:15;;5644:33;;;::::0;-1:-1:-1;;;5644:33:51;;21091:2:124;5644:33:51::1;::::0;::::1;21073:21:124::0;21130:1;21110:18;;;21103:29;21168:7;21148:18;;;21141:35;21193:18;;5644:33:51::1;20889:328:124::0;5644:33:51::1;5687:9;:22:::0;;;5724:27:::1;::::0;160:25:124;;;5724:27:51::1;::::0;148:2:124;133:18;5724:27:51::1;;;;;;;5398:360:::0;:::o;7433:3556:46:-;7779:12;7803:14;7930:23;7956:388;8031:2;8051:5;8074:4;;8096:9;8123;8182:7;8207:8;8233;8259:14;8325:5;;7956:21;:388::i;:::-;8413:5;:7;;7930:414;;-1:-1:-1;8413:5:46;:7;;;:::i;:::-;;;;-1:-1:-1;;8443:21:46;;;;;;;-1:-1:-1;8478:47:46;8443:21;8453:10;8514;8478:15;:47::i;:::-;7916:620;8545:13;8561:10;1306:66:49;2911:11;;2712:226;8561:10:46;8545:26;-1:-1:-1;8599:19:46;;;;8595:547;;8644:5;8638:29;;;8729:2;8753:5;8780:4;;8806:9;8837;8904:7;8933:8;8963;8993:14;9067:10;9099;8638:489;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8595:547;9456:45;9484:16;:9;9496:4;9484:16;:::i;:::-;9476:2;9458:14;:9;9470:2;9458:14;:::i;:::-;9457:21;;;;:::i;:::-;9456:27;;:45::i;:::-;:51;;9504:3;9456:51;:::i;:::-;9443:9;:64;;9435:82;;;;-1:-1:-1;;;9435:82:46;;23757:2:124;9435:82:46;;;23739:21:124;23796:1;23776:18;;;23769:29;23834:7;23814:18;;;23807:35;23859:18;;9435:82:46;23555:328:124;9435:82:46;9630:15;9648:9;9630:27;;9936:83;9944:2;9948:5;9955:4;;9936:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9961:9;9972:8;9984:1;9972:13;:46;;10009:9;9936:7;:83::i;9972:46::-;10001:4;9989:9;:16;;;;:::i;:::-;9936:7;:83::i;:::-;9926:93;;10043:22;10055:9;10043:7;;:11;:22::i;:::-;10033:32;;10349:7;:25;;;-1:-1:-1;10360:14:46;;;10349:25;:42;;;-1:-1:-1;10378:13:46;;;10349:42;10341:60;;;;-1:-1:-1;;;10341:60:46;;24223:2:124;10341:60:46;;;24205:21:124;24262:1;24242:18;;;24235:29;24300:7;24280:18;;;24273:35;24325:18;;10341:60:46;24021:328:124;10341:60:46;10550:15;10587:12;;10583:128;;10629:67;10643:7;10652;10661:8;10671;10681:14;10629:13;:67::i;:::-;10619:77;;10583:128;10728:7;10724:108;;;10759:6;10742:33;10767:7;10742:33;;;;160:25:124;;148:2;133:18;;14:177;10742:33:46;;;;;;;;10724:108;;;10816:6;10799:33;10824:7;10799:33;;;;160:25:124;;148:2;133:18;;14:177;10799:33:46;;;;;;;;10724:108;-1:-1:-1;;10870:19:46;;;;10866:107;;10909:49;;;;;;;;24522:25:124;;;24590:14;;24583:22;24563:18;;;24556:50;10909:32:46;;;;;;24495:18:124;;10909:49:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10866:107;7793:3196;;7433:3556;;;;;;;;;;;;;:::o;12858:353::-;13046:9;;13114:14;13106:32;;;;-1:-1:-1;;;13106:32:46;;24819:2:124;13106:32:46;;;24801:21:124;24858:1;24838:18;;;24831:29;24896:7;24876:18;;;24869:35;24921:18;;13106:32:46;24617:328:124;13106:32:46;13148:56;13165:8;13175:4;13181:10;13193;13148:16;:56::i;:::-;12957:254;12858:353;;;:::o;6383:437:51:-;6425:16;6453:22;6492:10;;6478:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6478:25:51;-1:-1:-1;687:3:51;6547:13;6597:23;;;:6;:23;;;;6453:50;;-1:-1:-1;6547:13:51;6597:23;;6630:162;6637:31;;;687:3;6637:31;6630:162;;6699:12;6684:5;6690;6684:12;;;;;;;;:::i;:::-;:27;;;;:12;;;;;;;;;;:27;;;;6740:20;;;;;;;:6;:20;;;;;;;;;6774:7;;;;:::i;:::-;;;;6630:162;;;-1:-1:-1;6808:5:51;;6383:437;-1:-1:-1;;6383:437:51:o;1882:486:58:-;2167:1;2164;2146:15;2140:22;2133:4;2116:15;2112:26;2096:14;2089:5;2076:93;2196:7;2190:4;2183:21;;2230:16;2224:4;2217:30;2284:16;2281:1;2275:4;2260:41;2346:4;2328:16;2324:27;2321:1;2314:38;4740:1151:46;5139:32;5151:7;;5139:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5160:10:46;;-1:-1:-1;5139:11:46;;-1:-1:-1;;5139:32:46:i;:::-;5185:29;;;;5181:78;;5216:43;5243:15;5216:26;:43::i;:::-;5394:22;5407:2;5411:4;;5394:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5394:12:46;;-1:-1:-1;;;5394:22:46:i;:::-;5431:11;;5427:380;;5737:59;5751:7;5760:1;5763;5766:12;5780:15;5737:13;:59::i;:::-;;5427:380;5831:10;5821:63;;;5843:7;;5852:10;5864:2;5868:15;5821:63;;;;;;;;;;:::i;:::-;;;;;;;;4740:1151;;;;;;;;;;:::o;6437:1535:50:-;6522:22;6546:12;6578:25;;;1005:3;6578:25;;:51;;;6607:22;6623:5;6607:15;:22::i;:::-;6570:69;;;;-1:-1:-1;;;6570:69:50;;26377:2:124;6570:69:50;;;26359:21:124;26416:1;26396:18;;;26389:29;26454:7;26434:18;;;26427:35;26479:18;;6570:69:50;26175:328:124;6570:69:50;6668:1;6657:8;:12;6649:30;;;;-1:-1:-1;;;6649:30:50;;26710:2:124;6649:30:50;;;26692:21:124;26749:1;26729:18;;;26722:29;26787:7;26767:18;;;26760:35;26812:18;;6649:30:50;26508:328:124;6649:30:50;6752:8;6738:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6738:23:50;-1:-1:-1;6845:14:50;;;;6805:19;6845:14;;;:7;:14;;;;;;6730:31;;-1:-1:-1;6845:14:50;;;-1:-1:-1;6869:192:50;6876:18;;;;;;;:46;;-1:-1:-1;6898:24:50;;;1005:3;6898:24;;6876:46;:72;;;;;6940:8;6926:11;:22;6876:72;6869:192;;;6985:4;6964:5;6970:11;6964:18;;;;;;;;:::i;:::-;:25;;;;:18;;;;;;;;;;:25;;;;7010:13;;;;;;;:7;:13;;;;;;;;;;;;7037;;;;:::i;:::-;;;;6869:192;;;7716:24;;;1005:3;7716:24;7712:84;;7763:5;7769:15;7783:1;7769:11;:15;:::i;:::-;7763:22;;;;;;;;:::i;:::-;;;;;;;7756:29;;7712:84;7944:11;7937:5;7930:26;7916:50;6437:1535;;;;;:::o;18133:228:46:-;18211:10;18234:1;18204:18;;;:6;:18;;;;;;:32;:18;18196:50;;;;-1:-1:-1;;;18196:50:46;;27043:2:124;18196:50:46;;;27025:21:124;27082:1;27062:18;;;27055:29;27120:7;27100:18;;;27093:35;27145:18;;18196:50:46;26841:328:124;18196:50:46;18271:10;18256:26;;;;:14;:26;;;;;;;;:41;;;;;;;;;18300:1;18256:45;;18316:38;18283:13;;18316:38;;;18133:228;:::o;21385:478::-;21706:7;21742:113;21764:2;21768:5;21775:4;;21781:9;21792;21803:7;21812:8;21822;21832:14;21848:6;21742:21;:113::i;:::-;21732:124;;;;;;21725:131;;21385:478;;;;;;;;;;;;;:::o;2677:423:50:-;505:17:55;:15;:17::i;:::-;2854:20:50::1;::::0;::::1;::::0;;::::1;::::0;:50:::1;;-1:-1:-1::0;2878:26:50::1;::::0;::::1;1005:3;2878:26;;2854:50;2846:68;;;::::0;-1:-1:-1;;;2846:68:50;;20092:2:124;2846:68:50::1;::::0;::::1;20074:21:124::0;20131:1;20111:18;;;20104:29;20169:7;20149:18;;;20142:35;20194:18;;2846:68:50::1;19890:328:124::0;2846:68:50::1;2932:29;:19:::0;;::::1;;::::0;;;:7:::1;:19;::::0;;;;;;::::1;:29:::0;;::::1;;2924:47;;;::::0;-1:-1:-1;;;2924:47:50;;27376:2:124;2924:47:50::1;::::0;::::1;27358:21:124::0;27415:1;27395:18;;;27388:29;27453:7;27433:18;;;27426:35;27478:18;;2924:47:50::1;27174:328:124::0;2924:47:50::1;3003:15;::::0;;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;2981:19;;::::1;::::0;;;;;:37;;3003:15;;;::::1;2981:37:::0;;;::::1;;::::0;;;3028:15;;;:28;;;;::::1;::::0;;;3071:22;;3003:15;;3071:22:::1;::::0;::::1;2677:423:::0;;:::o;1962:386:49:-;505:17:55;:15;:17::i;:::-;2029:19:49::1;::::0;::::1;::::0;2025:123:::1;;2072:55;::::0;;;;2103:23:::1;2072:55;::::0;::::1;27651:98:124::0;2072:30:49::1;::::0;::::1;::::0;::::1;::::0;27624:18:124;;2072:55:49::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2064:73;;;::::0;-1:-1:-1;;;2064:73:49;;28244:2:124;2064:73:49::1;::::0;::::1;28226:21:124::0;28283:1;28263:18;;;28256:29;28321:7;28301:18;;;28294:35;28346:18;;2064:73:49::1;28042:328:124::0;2064:73:49::1;1306:66;2279:19:::0;;;2322::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;2157:12:::1;::::0;2322:19:::1;2015:333;1962:386:::0;:::o;4416:796:51:-;505:17:55;:15;:17::i;:::-;4600:22:51::1;::::0;::::1;::::0;;::::1;::::0;:53:::1;;-1:-1:-1::0;4626:27:51::1;::::0;::::1;687:3;4626:27;;4600:53;:82;;;;-1:-1:-1::0;4657:25:51::1;::::0;::::1;4677:4;4657:25;;4600:82;4592:100;;;::::0;-1:-1:-1;;;4592:100:51;;14200:2:124;4592:100:51::1;::::0;::::1;14182:21:124::0;14239:1;14219:18;;;14212:29;14277:7;14257:18;;;14250:35;14302:18;;4592:100:51::1;13998:328:124::0;4592:100:51::1;4750:30;:16:::0;;::::1;4778:1;4750:16:::0;;;:6:::1;:16;::::0;;;;;::::1;:30:::0;4742:48:::1;;;::::0;-1:-1:-1;;;4742:48:51;;14533:2:124;4742:48:51::1;::::0;::::1;14515:21:124::0;14572:1;14552:18;;;14545:29;14610:7;14590:18;;;14583:35;14635:18;;4742:48:51::1;14331:328:124::0;4742:48:51::1;4891:22;::::0;::::1;::::0;;::::1;::::0;:53:::1;;-1:-1:-1::0;4917:27:51::1;::::0;::::1;687:3;4917:27;;4891:53;4883:71;;;::::0;-1:-1:-1;;;4883:71:51;;14200:2:124;4883:71:51::1;::::0;::::1;14182:21:124::0;14239:1;14219:18;;;14212:29;14277:7;14257:18;;;14250:35;14302:18;;4883:71:51::1;13998:328:124::0;4883:71:51::1;4972:29;:17:::0;;::::1;;::::0;;;:6:::1;:17;::::0;;;;;;::::1;:29:::0;;::::1;;4964:47;;;::::0;-1:-1:-1;;;4964:47:51;;28577:2:124;4964:47:51::1;::::0;::::1;28559:21:124::0;28616:1;28596:18;;;28589:29;28654:7;28634:18;;;28627:35;28679:18;;4964:47:51::1;28375:328:124::0;4964:47:51::1;5040:16;::::0;;::::1;;::::0;;;:6:::1;:16;::::0;;;;;;;5021;;::::1;::::0;;;;;;:35;;5040:16;;::::1;5021:35:::0;;;::::1;;::::0;;5066:17;;::::1;::::0;;;;;:28;;;::::1;::::0;;::::1;::::0;;;5104:16;;;:29;;;;::::1;::::0;;;5148:22;;5040:16;;5148:22:::1;::::0;::::1;5185:20;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;4416:796:::0;;;:::o;19858:822:46:-;20182:12;20206:18;2725:66;20278:16;;20312:2;20332:5;20365:4;;20355:15;;;;;;;:::i;:::-;;;;;;;;;20250:321;;;;;20388:9;;20415;;20442:7;;20467:8;;20493;;20519:14;;20551:6;;20250:321;;;:::i;:::-;;;;;;;;;;;;;;20227:354;;20250:321;20227:354;;;;;-1:-1:-1;20615:12:46;20629;20643:17;18949:7;2402:66;18689:9;18985:57;;;;;;30709:25:124;;;;30750:18;;30743:34;19037:4:46;30793:18:124;;;30786:83;30682:18;;18985:57:46;;;;;;;;;;;;18975:68;;;;;;18968:75;;18901:149;;20643:17;20598:75;;30225:66:124;30312:15;;;20598:75:46;;;30300:28:124;30357:15;;;;30344:11;;;30337:36;30389:11;;;30382:27;30425:12;;;30418:28;;;30462:12;;20598:75:46;;;;;;;;;;;;20591:82;;;19858:822;;;;;;;;;;;;;:::o;2437:161:48:-;505:17:55;:15;:17::i;:::-;2510:35:48::1;2537:7;2510:26;:35::i;:::-;2560:31;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;2437:161:::0;:::o;3380:697:51:-;505:17:55;:15;:17::i;:::-;3586:10:51::1;3581:1;3568:10;;:14;;;;:::i;:::-;:28;;3560:46;;;::::0;-1:-1:-1;;;3560:46:51;;20758:2:124;3560:46:51::1;::::0;::::1;20740:21:124::0;20797:1;20777:18;;;20770:29;20835:7;20815:18;;;20808:35;20860:18;;3560:46:51::1;20556:328:124::0;3560:46:51::1;3704:19;::::0;::::1;::::0;;::::1;::::0;:47:::1;;-1:-1:-1::0;3727:24:51::1;::::0;::::1;687:3;3727:24;;3704:47;3696:65;;;::::0;-1:-1:-1;;;3696:65:51;;14200:2:124;3696:65:51::1;::::0;::::1;14182:21:124::0;14239:1;14219:18;;;14212:29;14277:7;14257:18;;;14250:35;14302:18;;3696:65:51::1;13998:328:124::0;3696:65:51::1;3779:26;:17:::0;;::::1;;::::0;;;:6:::1;:17;::::0;;;;;;::::1;:26:::0;;::::1;;3771:44;;;::::0;-1:-1:-1;;;3771:44:51;;28577:2:124;3771:44:51::1;::::0;::::1;28559:21:124::0;28616:1;28596:18;;;28589:29;28654:7;28634:18;;;28627:35;28679:18;;3771:44:51::1;28375:328:124::0;3771:44:51::1;3845:13;::::0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;3825:17;;::::1;::::0;;;;;:33;;3845:13;;;::::1;3825:33:::0;;;::::1;;::::0;;;3868:13;;;:26;;;;::::1;::::0;;;3904:10:::1;:12:::0;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;3931:19:51::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;4031:10;4018:9;;:23;4014:56;;4043:27;4059:10;4043:15;:27::i;:::-;3380:697:::0;;;:::o;248:102:55:-;306:10;328:4;306:27;298:45;;;;-1:-1:-1;;;298:45:55;;31283:2:124;298:45:55;;;31265:21:124;31322:1;31302:18;;;31295:29;31360:7;31340:18;;;31333:35;31385:18;;298:45:55;31081:328:124;298:45:55;248:102::o;382:421:59:-;440:7;680:1;685;680:6;676:45;;-1:-1:-1;709:1:59;702:8;;676:45;731:9;743:5;747:1;743;:5;:::i;:::-;731:17;-1:-1:-1;775:1:59;766:5;770:1;731:17;766:5;:::i;:::-;:10;758:19;;;;;;795:1;382:421;-1:-1:-1;;;382:421:59:o;1335:145::-;1393:7;;1424:5;1428:1;1424;:5;:::i;:::-;1412:17;;1452:1;1447;:6;;1439:15;;;;;783:639:47;951:12;992:27;979:9;:40;;;;;;;;:::i;:::-;;975:441;;1190:1;1187;1180:4;1174:11;1167:4;1161;1157:15;1153:2;1146:5;1133:59;1122:70;;975:441;;;1390:1;1387;1380:4;1374:11;1367:4;1361;1357:15;1350:5;1346:2;1339:5;1334:58;1323:69;;975:441;783:639;;;;;;;:::o;1646:105:59:-;1704:7;1735:1;1730;:6;;:14;;1743:1;1730:14;;;-1:-1:-1;1739:1:59;;1723:21;-1:-1:-1;1646:105:59:o;1025:145::-;1083:7;1115:1;1110;:6;;1102:15;;;;;;1127:9;1139:5;1143:1;1139;:5;:::i;11514:821:46:-;11702:15;;11809:28;;;;:66;;11861:14;11809:66;;;11848:9;11809:66;11782:93;-1:-1:-1;11889:22:46;;;11885:444;;12042:73;12078:11;12067:8;:22;:47;;12103:11;12067:47;;;12092:8;12067:47;12042:20;:7;12054;12042:11;:20::i;:::-;:24;;:73::i;:::-;12137:22;;12032:83;;-1:-1:-1;12137:13:46;;;;:22;;;;;12032:83;;12137:22;;;;12032:83;12137:13;:22;;;;;;;12129:40;;;;-1:-1:-1;;;12129:40:46;;31616:2:124;12129:40:46;;;31598:21:124;31655:1;31635:18;;;31628:29;31693:7;31673:18;;;31666:35;31718:18;;12129:40:46;31414:328:124;12129:40:46;11885:444;;;12210:34;12235:8;12210:20;:7;12222;12210:11;:20::i;:34::-;12200:44;;12266:42;12280:8;12290;12300:7;12266:13;:42::i;:::-;12258:60;;;;-1:-1:-1;;;12258:60:46;;31949:2:124;12258:60:46;;;31931:21:124;31988:1;31968:18;;;31961:29;32026:7;32006:18;;;31999:35;32051:18;;12258:60:46;31747:328:124;12258:60:46;11719:616;11514:821;;;;;;;:::o;1011:1136:51:-;1229:9;;:14;1221:32;;;;-1:-1:-1;;;1221:32:51;;32282:2:124;1221:32:51;;;32264:21:124;32321:1;32301:18;;;32294:29;32359:7;32339:18;;;32332:35;32384:18;;1221:32:51;32080:328:124;1221:32:51;1360:7;:14;1346:10;:28;;1338:46;;;;-1:-1:-1;;;1338:46:51;;20758:2:124;1338:46:51;;;20740:21:124;20797:1;20777:18;;;20770:29;20835:7;20815:18;;;20808:35;20860:18;;1338:46:51;20556:328:124;1338:46:51;1468:1;1454:10;:15;;1446:33;;;;-1:-1:-1;;;1446:33:51;;21091:2:124;1446:33:51;;;21073:21:124;21130:1;21110:18;;;21103:29;21168:7;21148:18;;;21141:35;21193:18;;1446:33:51;20889:328:124;1446:33:51;687:3;1526:20;1574:450;1598:7;:14;1594:1;:18;1574:450;;;1678:13;1694:7;1702:1;1694:10;;;;;;;;:::i;:::-;;;;;;;1678:26;;1743:1;1726:19;;:5;:19;;;;:47;;;;-1:-1:-1;1749:24:51;;;687:3;1749:24;;1726:47;:73;;;;-1:-1:-1;1777:22:51;;;1794:4;1777:22;;1726:73;:98;;;;;1819:5;1803:21;;:12;:21;;;;1726:98;1718:116;;;;-1:-1:-1;;;1718:116:51;;14200:2:124;1718:116:51;;;14182:21:124;14239:1;14219:18;;;14212:29;14277:7;14257:18;;;14250:35;14302:18;;1718:116:51;13998:328:124;1718:116:51;1900:27;:13;;;1925:1;1900:13;;;:6;:13;;;;;;;:27;1892:45;;;;-1:-1:-1;;;1892:45:51;;14533:2:124;1892:45:51;;;14515:21:124;14572:1;14552:18;;;14545:29;14610:7;14590:18;;;14583:35;14635:18;;1892:45:51;14331:328:124;1892:45:51;1951:20;;;;;;;;:6;:20;;;;;:28;;;;;;;;;;;;;;1614:3;;;;:::i;:::-;;;;1574:450;;;-1:-1:-1;2033:20:51;;;;;;:6;:20;;;;;:38;;;;687:3;2033:38;;;2094:14;;2081:10;:27;2118:9;:22;1011:1136::o;689:1423:48:-;1916:4;1897:24;;;;1889:42;;;;-1:-1:-1;;;1889:42:48;;32615:2:124;1889:42:48;;;32597:21:124;32654:1;32634:18;;;32627:29;32692:7;32672:18;;;32665:35;32717:18;;1889:42:48;32413:328:124;1889:42:48;479:66;2075:21;689:1423::o;1367:450:50:-;1447:7;1484:1;1447:25;;;;;;;:39;:25;:39;1439:57;;;;-1:-1:-1;;;1439:57:50;;32948:2:124;1439:57:50;;;32930:21:124;32987:1;32967:18;;;32960:29;33025:7;33005:18;;;32998:35;33050:18;;1439:57:50;32746:328:124;1439:57:50;1005:3;1506:25;;;;;;;;;:44;;;;;;;;;:25;1564:16;;;1560:251;;8462:20;;1596:32;;;;-1:-1:-1;;;1596:32:50;;33281:2:124;1596:32:50;;;33263:21:124;33320:1;33300:18;;;33293:29;33358:7;33338:18;;;33331:35;33383:18;;1596:32:50;33079:328:124;1596:32:50;1722:68;1730:2;1734:1;1737:4;1743:27;1772:17;1722:7;:68::i;:::-;1714:86;;;;-1:-1:-1;;;1714:86:50;;33614:2:124;1714:86:50;;;33596:21:124;33653:1;33633:18;;;33626:29;33691:7;33671:18;;;33664:35;33716:18;;1714:86:50;33412:328:124;763:904:54;962:52;;;33949:42:124;33937:55;;962:52:54;;;33919:74:124;34009:18;;;;34002:34;;;962:52:54;;;;;;;;;;33892:18:124;;;;962:52:54;;;;;;;;;;;;;;;1336:11;;-1:-1:-1;;962:52:54;;-1:-1:-1;;1336:11:54;-1:-1:-1;1309:5:54;1301;1294;1290:17;1285:72;1377:16;1406:61;;;;1485:4;1480:102;;;;1636:1;1621:16;;1370:281;;1406:61;1446:7;1431:22;;1406:61;;1480:102;1563:1;1557:8;1550:16;1540:7;1533:15;1530:37;1523:45;1508:60;;1370:281;;;1089:572;763:904;;;;;:::o;196:154:124:-;282:42;275:5;271:54;264:5;261:65;251:93;;340:1;337;330:12;251:93;196:154;:::o;355:134::-;423:20;;452:31;423:20;452:31;:::i;:::-;355:134;;;:::o;494:315::-;562:6;570;623:2;611:9;602:7;598:23;594:32;591:52;;;639:1;636;629:12;591:52;678:9;665:23;697:31;722:5;697:31;:::i;:::-;747:5;799:2;784:18;;;;771:32;;-1:-1:-1;;;494:315:124:o;814:184::-;866:77;863:1;856:88;963:4;960:1;953:15;987:4;984:1;977:15;1003:777;1045:5;1098:3;1091:4;1083:6;1079:17;1075:27;1065:55;;1116:1;1113;1106:12;1065:55;1152:6;1139:20;1178:18;1215:2;1211;1208:10;1205:36;;;1221:18;;:::i;:::-;1355:2;1349:9;1417:4;1409:13;;1260:66;1405:22;;;1429:2;1401:31;1397:40;1385:53;;;1453:18;;;1473:22;;;1450:46;1447:72;;;1499:18;;:::i;:::-;1539:10;1535:2;1528:22;1574:2;1566:6;1559:18;1620:3;1613:4;1608:2;1600:6;1596:15;1592:26;1589:35;1586:55;;;1637:1;1634;1627:12;1586:55;1701:2;1694:4;1686:6;1682:17;1675:4;1667:6;1663:17;1650:54;1748:1;1741:4;1736:2;1728:6;1724:15;1720:26;1713:37;1768:6;1759:15;;;;;;1003:777;;;;:::o;1785:676::-;1889:6;1897;1905;1913;1966:3;1954:9;1945:7;1941:23;1937:33;1934:53;;;1983:1;1980;1973:12;1934:53;2019:9;2006:23;1996:33;;2080:2;2069:9;2065:18;2052:32;2103:18;2144:2;2136:6;2133:14;2130:34;;;2160:1;2157;2150:12;2130:34;2183:49;2224:7;2215:6;2204:9;2200:22;2183:49;:::i;:::-;2173:59;;2285:2;2274:9;2270:18;2257:32;2241:48;;2314:2;2304:8;2301:16;2298:36;;;2330:1;2327;2320:12;2298:36;;2353:51;2396:7;2385:8;2374:9;2370:24;2353:51;:::i;:::-;1785:676;;;;-1:-1:-1;2343:61:124;;2451:2;2436:18;2423:32;;-1:-1:-1;;;1785:676:124:o;2466:247::-;2525:6;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;2910:150::-;2985:20;;3034:1;3024:12;;3014:40;;3050:1;3047;3040:12;3065:620;3175:6;3183;3191;3199;3252:3;3240:9;3231:7;3227:23;3223:33;3220:53;;;3269:1;3266;3259:12;3220:53;3308:9;3295:23;3327:31;3352:5;3327:31;:::i;:::-;3377:5;-1:-1:-1;3429:2:124;3414:18;;3401:32;;-1:-1:-1;3484:2:124;3469:18;;3456:32;3511:18;3500:30;;3497:50;;;3543:1;3540;3533:12;3497:50;3566:49;3607:7;3598:6;3587:9;3583:22;3566:49;:::i;:::-;3556:59;;;3634:45;3675:2;3664:9;3660:18;3634:45;:::i;:::-;3624:55;;3065:620;;;;;;;:::o;3690:481::-;3731:3;3769:5;3763:12;3796:6;3791:3;3784:19;3821:1;3831:162;3845:6;3842:1;3839:13;3831:162;;;3907:4;3963:13;;;3959:22;;3953:29;3935:11;;;3931:20;;3924:59;3860:12;3831:162;;;3835:3;4038:1;4031:4;4022:6;4017:3;4013:16;4009:27;4002:38;4160:4;4090:66;4085:2;4077:6;4073:15;4069:88;4064:3;4060:98;4056:109;4049:116;;;3690:481;;;;:::o;4176:298::-;4359:6;4352:14;4345:22;4334:9;4327:41;4404:2;4399;4388:9;4384:18;4377:30;4308:4;4424:44;4464:2;4453:9;4449:18;4441:6;4424:44;:::i;4479:248::-;4547:6;4555;4608:2;4596:9;4587:7;4583:23;4579:32;4576:52;;;4624:1;4621;4614:12;4576:52;-1:-1:-1;;4647:23:124;;;4717:2;4702:18;;;4689:32;;-1:-1:-1;4479:248:124:o;4732:217::-;4879:2;4868:9;4861:21;4842:4;4899:44;4939:2;4928:9;4924:18;4916:6;4899:44;:::i;4954:180::-;5013:6;5066:2;5054:9;5045:7;5041:23;5037:32;5034:52;;;5082:1;5079;5072:12;5034:52;-1:-1:-1;5105:23:124;;4954:180;-1:-1:-1;4954:180:124:o;5324:347::-;5375:8;5385:6;5439:3;5432:4;5424:6;5420:17;5416:27;5406:55;;5457:1;5454;5447:12;5406:55;-1:-1:-1;5480:20:124;;5523:18;5512:30;;5509:50;;;5555:1;5552;5545:12;5509:50;5592:4;5584:6;5580:17;5568:29;;5644:3;5637:4;5628:6;5620;5616:19;5612:30;5609:39;5606:59;;;5661:1;5658;5651:12;5606:59;5324:347;;;;;:::o;5676:1224::-;5859:6;5867;5875;5883;5891;5899;5907;5915;5923;5931;5939:7;5993:3;5981:9;5972:7;5968:23;5964:33;5961:53;;;6010:1;6007;6000:12;5961:53;6033:29;6052:9;6033:29;:::i;:::-;6023:39;;6109:2;6098:9;6094:18;6081:32;6071:42;;6132:18;6199:2;6193;6182:9;6178:18;6165:32;6162:40;6159:60;;;6215:1;6212;6205:12;6159:60;6254:84;6330:7;6323:2;6312:9;6308:18;6295:32;6284:9;6280:48;6254:84;:::i;:::-;6357:8;;-1:-1:-1;6384:8:124;-1:-1:-1;6411:45:124;6452:2;6437:18;;6411:45;:::i;:::-;6401:55;;6503:3;6492:9;6488:19;6475:33;6465:43;;6555:3;6544:9;6540:19;6527:33;6517:43;;6607:3;6596:9;6592:19;6579:33;6569:43;;6631:39;6665:3;6654:9;6650:19;6631:39;:::i;:::-;6621:49;;6689:39;6723:3;6712:9;6708:19;6689:39;:::i;:::-;6679:49;;6778:2;6771:3;6760:9;6756:19;6743:33;6740:41;6737:61;;;6794:1;6791;6784:12;6737:61;;6818:76;6886:7;6878:3;6867:9;6863:19;6850:33;6839:9;6835:49;6818:76;:::i;:::-;6807:87;;5676:1224;;;;;;;;;;;;;;:::o;7225:607::-;7320:6;7328;7336;7389:2;7377:9;7368:7;7364:23;7360:32;7357:52;;;7405:1;7402;7395:12;7357:52;7441:9;7428:23;7418:33;;7502:2;7491:9;7487:18;7474:32;7525:18;7566:2;7558:6;7555:14;7552:34;;;7582:1;7579;7572:12;7552:34;7605:49;7646:7;7637:6;7626:9;7622:22;7605:49;:::i;:::-;7595:59;;7707:2;7696:9;7692:18;7679:32;7663:48;;7736:2;7726:8;7723:16;7720:36;;;7752:1;7749;7742:12;7720:36;;7775:51;7818:7;7807:8;7796:9;7792:24;7775:51;:::i;:::-;7765:61;;;7225:607;;;;;:::o;7969:484::-;8022:3;8060:5;8054:12;8087:6;8082:3;8075:19;8113:4;8142:2;8137:3;8133:12;8126:19;;8179:2;8172:5;8168:14;8200:1;8210:218;8224:6;8221:1;8218:13;8210:218;;;8289:13;;8304:42;8285:62;8273:75;;8368:12;;;;8403:15;;;;8246:1;8239:9;8210:218;;;-1:-1:-1;8444:3:124;;7969:484;-1:-1:-1;;;;;7969:484:124:o;8458:261::-;8637:2;8626:9;8619:21;8600:4;8657:56;8709:2;8698:9;8694:18;8686:6;8657:56;:::i;8724:455::-;8801:6;8809;8862:2;8850:9;8841:7;8837:23;8833:32;8830:52;;;8878:1;8875;8868:12;8830:52;8917:9;8904:23;8936:31;8961:5;8936:31;:::i;:::-;8986:5;-1:-1:-1;9042:2:124;9027:18;;9014:32;9069:18;9058:30;;9055:50;;;9101:1;9098;9091:12;9055:50;9124:49;9165:7;9156:6;9145:9;9141:22;9124:49;:::i;:::-;9114:59;;;8724:455;;;;;:::o;9184:1353::-;9352:6;9360;9368;9376;9384;9392;9400;9408;9416;9424;9477:3;9465:9;9456:7;9452:23;9448:33;9445:53;;;9494:1;9491;9484:12;9445:53;9534:9;9521:23;9563:18;9604:2;9596:6;9593:14;9590:34;;;9620:1;9617;9610:12;9590:34;9658:6;9647:9;9643:22;9633:32;;9703:7;9696:4;9692:2;9688:13;9684:27;9674:55;;9725:1;9722;9715:12;9674:55;9765:2;9752:16;9791:2;9783:6;9780:14;9777:34;;;9807:1;9804;9797:12;9777:34;9862:7;9855:4;9845:6;9842:1;9838:14;9834:2;9830:23;9826:34;9823:47;9820:67;;;9883:1;9880;9873:12;9820:67;9914:4;9906:13;;;;-1:-1:-1;9938:6:124;;-1:-1:-1;9976:20:124;;9963:34;;-1:-1:-1;10016:38:124;10050:2;10035:18;;10016:38;:::i;:::-;10006:48;;10107:2;10096:9;10092:18;10079:32;10063:48;;10136:2;10126:8;10123:16;10120:36;;;10152:1;10149;10142:12;10120:36;;10191:60;10243:7;10232:8;10221:9;10217:24;10191:60;:::i;:::-;10270:8;;-1:-1:-1;10165:86:124;-1:-1:-1;10324:39:124;;-1:-1:-1;10358:3:124;10343:19;;10324:39;:::i;:::-;10314:49;;10382:39;10416:3;10405:9;10401:19;10382:39;:::i;:::-;10372:49;;10468:3;10457:9;10453:19;10440:33;10430:43;;10492:39;10526:3;10515:9;10511:19;10492:39;:::i;:::-;10482:49;;9184:1353;;;;;;;;;;;;;:::o;10542:381::-;10749:2;10738:9;10731:21;10712:4;10769:56;10821:2;10810:9;10806:18;10798:6;10769:56;:::i;:::-;10761:64;;10873:42;10865:6;10861:55;10856:2;10845:9;10841:18;10834:83;10542:381;;;;;:::o;10928:1271::-;11094:6;11102;11110;11118;11126;11134;11142;11150;11158;11166;11174:7;11228:3;11216:9;11207:7;11203:23;11199:33;11196:53;;;11245:1;11242;11235:12;11196:53;11284:9;11271:23;11303:31;11328:5;11303:31;:::i;:::-;11353:5;-1:-1:-1;11405:2:124;11390:18;;11377:32;;-1:-1:-1;11460:2:124;11445:18;;11432:32;11487:18;11476:30;;11473:50;;;11519:1;11516;11509:12;11473:50;11558:58;11608:7;11599:6;11588:9;11584:22;11558:58;:::i;:::-;11635:8;;-1:-1:-1;11532:84:124;-1:-1:-1;11689:45:124;;-1:-1:-1;11730:2:124;11715:18;;11689:45;:::i;:::-;11679:55;;11781:3;11770:9;11766:19;11753:33;11743:43;;11833:3;11822:9;11818:19;11805:33;11795:43;;11885:3;11874:9;11870:19;11857:33;11847:43;;11942:3;11931:9;11927:19;11914:33;11956;11981:7;11956:33;:::i;:::-;12008:7;-1:-1:-1;12067:3:124;12052:19;;12039:33;12081;12039;12081;:::i;:::-;12133:7;12123:17;;;12188:3;12177:9;12173:19;12160:33;12149:44;;10928:1271;;;;;;;;;;;;;;:::o;12386:388::-;12454:6;12462;12515:2;12503:9;12494:7;12490:23;12486:32;12483:52;;;12531:1;12528;12521:12;12483:52;12570:9;12557:23;12589:31;12614:5;12589:31;:::i;:::-;12639:5;-1:-1:-1;12696:2:124;12681:18;;12668:32;12709:33;12668:32;12709:33;:::i;:::-;12761:7;12751:17;;;12386:388;;;;;:::o;12779:529::-;12856:6;12864;12872;12925:2;12913:9;12904:7;12900:23;12896:32;12893:52;;;12941:1;12938;12931:12;12893:52;12980:9;12967:23;12999:31;13024:5;12999:31;:::i;:::-;13049:5;-1:-1:-1;13106:2:124;13091:18;;13078:32;13119:33;13078:32;13119:33;:::i;:::-;13171:7;-1:-1:-1;13230:2:124;13215:18;;13202:32;13243:33;13202:32;13243:33;:::i;:::-;13295:7;13285:17;;;12779:529;;;;;:::o;13313:456::-;13390:6;13398;13406;13459:2;13447:9;13438:7;13434:23;13430:32;13427:52;;;13475:1;13472;13465:12;13427:52;13514:9;13501:23;13533:31;13558:5;13533:31;:::i;:::-;13583:5;-1:-1:-1;13640:2:124;13625:18;;13612:32;13653:33;13612:32;13653:33;:::i;:::-;13313:456;;13705:7;;-1:-1:-1;;;13759:2:124;13744:18;;;;13731:32;;13313:456::o;14664:184::-;14716:77;14713:1;14706:88;14813:4;14810:1;14803:15;14837:4;14834:1;14827:15;14853:195;14892:3;14923:66;14916:5;14913:77;14910:103;;14993:18;;:::i;:::-;-1:-1:-1;15040:1:124;15029:13;;14853:195::o;16718:377::-;16911:2;16900:9;16893:21;16874:4;16937:44;16977:2;16966:9;16962:18;16954:6;16937:44;:::i;:::-;17029:9;17021:6;17017:22;17012:2;17001:9;16997:18;16990:50;17057:32;17082:6;17074;17057:32;:::i;17100:336::-;17169:6;17222:2;17210:9;17201:7;17197:23;17193:32;17190:52;;;17238:1;17235;17228:12;17190:52;17270:9;17264:16;17320:66;17313:5;17309:78;17302:5;17299:89;17289:117;;17402:1;17399;17392:12;18492:151;18582:4;18575:12;;;18561;;;18557:31;;18600:14;;18597:40;;;18617:18;;:::i;19717:168::-;19790:9;;;19821;;19838:15;;;19832:22;;19818:37;19808:71;;19859:18;;:::i;21222:184::-;21274:77;21271:1;21264:88;21371:4;21368:1;21361:15;21395:4;21392:1;21385:15;21411:294;21492:1;21485:5;21482:12;21472:200;;21528:77;21525:1;21518:88;21629:4;21626:1;21619:15;21657:4;21654:1;21647:15;21472:200;21681:18;;21411:294::o;21710:1431::-;22159:4;22188:3;22230:42;22222:6;22218:55;22207:9;22200:74;22310:6;22305:2;22294:9;22290:18;22283:34;22353:2;22348;22337:9;22333:18;22326:30;22392:6;22387:2;22376:9;22372:18;22365:34;;22418:3;22471:6;22463;22458:2;22447:9;22443:18;22430:48;22527:1;22522:2;22513:6;22502:9;22498:22;22494:31;22487:42;22584:66;22579:2;22571:6;22567:15;22563:88;22552:9;22548:104;22661:53;22710:2;22699:9;22695:18;22687:6;22661:53;:::i;:::-;22751:6;22745:3;22734:9;22730:19;22723:35;22795:6;22789:3;22778:9;22774:19;22767:35;22839:6;22833:3;22822:9;22818:19;22811:35;22855:47;22897:3;22886:9;22882:19;22874:6;7914:42;7903:54;7891:67;;7837:127;22855:47;7914:42;7903:54;;22953:3;22938:19;;7891:67;23019:2;23007:9;23003:2;22999:18;22995:27;22989:3;22978:9;22974:19;22967:56;23040:38;23074:2;23070;23066:11;23057:7;23040:38;:::i;:::-;23032:46;;;;23087:48;23130:3;23119:9;23115:19;23106:7;7914:42;7903:54;7891:67;;7837:127;23087:48;21710:1431;;;;;;;;;;;;;;;:::o;23146:125::-;23211:9;;;23232:10;;;23229:36;;;23245:18;;:::i;23276:274::-;23316:1;23342;23332:189;;23377:77;23374:1;23367:88;23478:4;23475:1;23468:15;23506:4;23503:1;23496:15;23332:189;-1:-1:-1;23535:9:124;;23276:274::o;23888:128::-;23955:9;;;23976:11;;;23973:37;;;23990:18;;:::i;24950:184::-;25002:77;24999:1;24992:88;25099:4;25096:1;25089:15;25123:4;25120:1;25113:15;25139:1031;25423:3;25436:22;;;25408:19;;25493:22;;;25375:4;25573:6;25546:3;25531:19;;25375:4;25607:327;25621:6;25618:1;25615:13;25607:327;;;25696:6;25683:20;25716:31;25741:5;25716:31;:::i;:::-;25783:42;25772:54;25760:67;;25850:4;25909:15;;;;25874:12;;;;25643:1;25636:9;25607:327;;;-1:-1:-1;25985:4:124;25970:20;;25963:36;;;;-1:-1:-1;;26018:42:124;26096:15;;;26091:2;26076:18;;26069:43;26148:15;;26143:2;26128:18;;;26121:43;25951:3;25139:1031;-1:-1:-1;;25139:1031:124:o;27760:277::-;27827:6;27880:2;27868:9;27859:7;27855:23;27851:32;27848:52;;;27896:1;27893;27886:12;27848:52;27928:9;27922:16;27981:5;27974:13;27967:21;27960:5;27957:32;27947:60;;28003:1;28000;27993:12;28708:271;28891:6;28883;28878:3;28865:33;28847:3;28917:16;;28942:13;;;28917:16;28708:271;-1:-1:-1;28708:271:124:o;28984:1017::-;29370:4;29412:3;29401:9;29397:19;29389:27;;29443:6;29432:9;29425:25;29469:42;29559:2;29551:6;29547:15;29542:2;29531:9;29527:18;29520:43;29599:6;29594:2;29583:9;29579:18;29572:34;29642:6;29637:2;29626:9;29622:18;29615:34;29658:54;29707:3;29696:9;29692:19;29684:6;29658:54;:::i;:::-;29743:3;29728:19;;29721:35;;;;29787:3;29772:19;;29765:35;;;;29831:3;29816:19;;29809:35;;;;29881:15;;;29875:3;29860:19;;29853:44;29934:15;;;29928:3;29913:19;;29906:44;29981:3;29966:19;29959:36;;;;28984:1017;;-1:-1:-1;;;;;28984:1017:124:o;30880:196::-;30919:3;30947:5;30937:39;;30956:18;;:::i;:::-;-1:-1:-1;31003:66:124;30992:78;;30880:196::o","linkReferences":{}},"methodIdentifiers":{"VERSION()":"ffa1ad74","addOwnerWithThreshold(address,uint256)":"0d582f13","approveHash(bytes32)":"d4d9bdcd","approvedHashes(address,bytes32)":"7d832974","changeThreshold(uint256)":"694e80c3","checkNSignatures(bytes32,bytes,bytes,uint256)":"12fb68e0","checkSignatures(bytes32,bytes,bytes)":"934f3a11","disableModule(address,address)":"e009cfde","domainSeparator()":"f698da25","enableModule(address)":"610b5925","encodeTransactionData(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)":"e86637db","execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)":"6a761202","execTransactionFromModule(address,uint256,bytes,uint8)":"468721a7","execTransactionFromModuleReturnData(address,uint256,bytes,uint8)":"5229073f","getChainId()":"3408e470","getModulesPaginated(address,uint256)":"cc2f8452","getOwners()":"a0e67e2b","getStorageAt(uint256,uint256)":"5624b25b","getThreshold()":"e75235b8","getTransactionHash(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)":"d8d11f78","isModuleEnabled(address)":"2d9ad53d","isOwner(address)":"2f54bf6e","nonce()":"affed0e0","removeOwner(address,address,uint256)":"f8dc5dd9","setFallbackHandler(address)":"f08a0323","setGuard(address)":"e19a9dd9","setup(address[],uint256,address,bytes,address,address,uint256,address)":"b63e800d","signedMessages(bytes32)":"5ae6bd37","simulateAndRevert(address,bytes)":"b4faba09","swapOwner(address,address,address)":"e318b52b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"AddedOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"approvedHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ApproveHash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"}],\"name\":\"ChangedFallbackHandler\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guard\",\"type\":\"address\"}],\"name\":\"ChangedGuard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"ChangedThreshold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"DisabledModule\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"EnabledModule\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"name\":\"ExecutionFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"ExecutionFromModuleFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"ExecutionFromModuleSuccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"}],\"name\":\"ExecutionSuccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RemovedOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initializer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fallbackHandler\",\"type\":\"address\"}],\"name\":\"SafeSetup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignMsg\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"addOwnerWithThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashToApprove\",\"type\":\"bytes32\"}],\"name\":\"approveHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"approvedHashes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"changeThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"requiredSignatures\",\"type\":\"uint256\"}],\"name\":\"checkNSignatures\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"}],\"name\":\"checkSignatures\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"disableModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"enableModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"safeTxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"gasToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"encodeTransactionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"safeTxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"gasToken\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"refundReceiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"}],\"name\":\"execTransaction\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execTransactionFromModule\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execTransactionFromModuleReturnData\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"start\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pageSize\",\"type\":\"uint256\"}],\"name\":\"getModulesPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"array\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"next\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"enum Enum.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"safeTxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"gasToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getTransactionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"isModuleEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"removeOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"}],\"name\":\"setFallbackHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guard\",\"type\":\"address\"}],\"name\":\"setGuard\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_owners\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"fallbackHandler\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"paymentReceiver\",\"type\":\"address\"}],\"name\":\"setup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"signedMessages\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prevOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"swapOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Stefan George - @Georgi87Richard Meissner - @rmeissner\",\"details\":\"Most important concepts: - Threshold: Number of required confirmations for a Safe transaction. - Owners: List of addresses that control the Safe. They are the only ones that can add/remove owners, change the threshold and approve transactions. Managed in `OwnerManager`. - Transaction Hash: Hash of a transaction is calculated using the EIP-712 typed structured data hashing scheme. - Nonce: Each transaction should have a different nonce to prevent replay attacks. - Signature: A valid signature of an owner of the Safe for a transaction hash. - Guard: Guard is a contract that can execute pre- and post- transaction checks. Managed in `GuardManager`. - Modules: Modules are contracts that can be used to extend the write functionality of a Safe. Managed in `ModuleManager`. - Fallback: Fallback handler is a contract that can provide additional read-only functional for Safe. Managed in `FallbackManager`. Note: This version of the implementation contract doesn't emit events for the sake of gas efficiency and therefore requires a tracing node for indexing/ For the events-based implementation see `SafeL2.sol`.\",\"kind\":\"dev\",\"methods\":{\"addOwnerWithThreshold(address,uint256)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"_threshold\":\"New threshold.\",\"owner\":\"New owner address.\"}},\"approveHash(bytes32)\":{\"details\":\"This can be used with a pre-approved hash transaction signature. IMPORTANT: The approved hash stays approved forever. There's no revocation mechanism, so it behaves similarly to ECDSA signatures\",\"params\":{\"hashToApprove\":\"The hash to mark as approved for signatures that are verified by this contract.\"}},\"changeThreshold(uint256)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"_threshold\":\"New threshold.\"}},\"checkNSignatures(bytes32,bytes,bytes,uint256)\":{\"details\":\"Since the EIP-1271 does an external call, be mindful of reentrancy attacks.\",\"params\":{\"data\":\"That should be signed (this is passed to an external validator contract)\",\"dataHash\":\"Hash of the data (could be either a message hash or transaction hash)\",\"requiredSignatures\":\"Amount of required valid signatures.\",\"signatures\":\"Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash.\"}},\"checkSignatures(bytes32,bytes,bytes)\":{\"params\":{\"data\":\"That should be signed (this is passed to an external validator contract)\",\"dataHash\":\"Hash of the data (could be either a message hash or transaction hash)\",\"signatures\":\"Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash.\"}},\"disableModule(address,address)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"module\":\"Module to be removed.\",\"prevModule\":\"Previous module in the modules linked list.\"}},\"domainSeparator()\":{\"details\":\"Returns the domain separator for this contract, as defined in the EIP-712 standard.\",\"returns\":{\"_0\":\"bytes32 The domain separator hash.\"}},\"enableModule(address)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"module\":\"Module to be whitelisted.\"}},\"encodeTransactionData(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)\":{\"params\":{\"_nonce\":\"Transaction nonce.\",\"baseGas\":\"Gas costs for that are independent of the transaction execution(e.g. base transaction fee, signature check, payment of the refund)\",\"data\":\"Data payload.\",\"gasPrice\":\"Maximum gas price that should be used for this transaction.\",\"gasToken\":\"Token address (or 0 if ETH) that is used for the payment.\",\"operation\":\"Operation type.\",\"refundReceiver\":\"Address of receiver of gas payment (or 0 if tx.origin).\",\"safeTxGas\":\"Gas that should be used for the safe transaction.\",\"to\":\"Destination address.\",\"value\":\"Ether value.\"},\"returns\":{\"_0\":\"Transaction hash bytes.\"}},\"execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)\":{\"details\":\"The fees are always transferred, even if the user transaction fails. This method doesn't perform any sanity check of the transaction, such as: - if the contract at `to` address has code or not - if the `gasToken` is a contract or not It is the responsibility of the caller to perform such checks.\",\"params\":{\"baseGas\":\"Gas costs that are independent of the transaction execution(e.g. base transaction fee, signature check, payment of the refund)\",\"data\":\"Data payload of Safe transaction.\",\"gasPrice\":\"Gas price that should be used for the payment calculation.\",\"gasToken\":\"Token address (or 0 if ETH) that is used for the payment.\",\"operation\":\"Operation type of Safe transaction.\",\"refundReceiver\":\"Address of receiver of gas payment (or 0 if tx.origin).\",\"safeTxGas\":\"Gas that should be used for the Safe transaction.\",\"signatures\":\"Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash.\",\"to\":\"Destination address of Safe transaction.\",\"value\":\"Ether value of Safe transaction.\"},\"returns\":{\"success\":\"Boolean indicating transaction's success.\"}},\"execTransactionFromModule(address,uint256,bytes,uint8)\":{\"details\":\"Function is virtual to allow overriding for L2 singleton to emit an event for indexing.\",\"params\":{\"data\":\"Data payload of module transaction.\",\"operation\":\"Operation type of module transaction.\",\"to\":\"Destination address of module transaction.\",\"value\":\"Ether value of module transaction.\"},\"returns\":{\"success\":\"Boolean flag indicating if the call succeeded.\"}},\"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)\":{\"params\":{\"data\":\"Data payload of module transaction.\",\"operation\":\"Operation type of module transaction.\",\"to\":\"Destination address of module transaction.\",\"value\":\"Ether value of module transaction.\"},\"returns\":{\"returnData\":\"Data returned by the call.\",\"success\":\"Boolean flag indicating if the call succeeded.\"}},\"getChainId()\":{\"returns\":{\"_0\":\"The ID of the current chain as a uint256.\"}},\"getModulesPaginated(address,uint256)\":{\"params\":{\"pageSize\":\"Maximum number of modules that should be returned. Has to be > 0\",\"start\":\"Start of the page. Has to be a module or start pointer (0x1 address)\"},\"returns\":{\"array\":\"Array of modules.\",\"next\":\"Start of the next page.\"}},\"getOwners()\":{\"returns\":{\"_0\":\"Array of Safe owners.\"}},\"getStorageAt(uint256,uint256)\":{\"params\":{\"length\":\"- the number of words (32 bytes) of data to read\",\"offset\":\"- the offset in the current contract's storage in words to start reading from\"},\"returns\":{\"_0\":\"the bytes that were read.\"}},\"getThreshold()\":{\"returns\":{\"_0\":\"Threshold number.\"}},\"getTransactionHash(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)\":{\"params\":{\"_nonce\":\"Transaction nonce.\",\"baseGas\":\"Gas costs for data used to trigger the safe transaction.\",\"data\":\"Data payload.\",\"gasPrice\":\"Maximum gas price that should be used for this transaction.\",\"gasToken\":\"Token address (or 0 if ETH) that is used for the payment.\",\"operation\":\"Operation type.\",\"refundReceiver\":\"Address of receiver of gas payment (or 0 if tx.origin).\",\"safeTxGas\":\"Fas that should be used for the safe transaction.\",\"to\":\"Destination address.\",\"value\":\"Ether value.\"},\"returns\":{\"_0\":\"Transaction hash.\"}},\"isModuleEnabled(address)\":{\"returns\":{\"_0\":\"True if the module is enabled\"}},\"isOwner(address)\":{\"returns\":{\"_0\":\"Boolean if owner is an owner of the Safe.\"}},\"removeOwner(address,address,uint256)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"_threshold\":\"New threshold.\",\"owner\":\"Owner address to be removed.\",\"prevOwner\":\"Owner that pointed to the owner to be removed in the linked list\"}},\"setFallbackHandler(address)\":{\"details\":\"Only fallback calls without value and with data will be forwarded. This can only be done via a Safe transaction. Cannot be set to the Safe itself.\",\"params\":{\"handler\":\"contract to handle fallback calls.\"}},\"setGuard(address)\":{\"details\":\"Set a guard that checks transactions before execution This can only be done via a Safe transaction. \\u26a0\\ufe0f IMPORTANT: Since a guard has full power to block Safe transaction execution, a broken guard can cause a denial of service for the Safe. Make sure to carefully audit the guard code and design recovery mechanisms.\",\"params\":{\"guard\":\"The address of the guard to be used or the 0 address to disable the guard\"}},\"setup(address[],uint256,address,bytes,address,address,uint256,address)\":{\"details\":\"This method can only be called once. If a proxy was created without setting up, anyone can call setup and claim the proxy.\",\"params\":{\"_owners\":\"List of Safe owners.\",\"_threshold\":\"Number of required confirmations for a Safe transaction.\",\"data\":\"Data payload for optional delegate call.\",\"fallbackHandler\":\"Handler for fallback calls to this contract\",\"payment\":\"Value that should be paid\",\"paymentReceiver\":\"Address that should receive the payment (or 0 if tx.origin)\",\"paymentToken\":\"Token that should be used for the payment (0 is ETH)\",\"to\":\"Contract address for optional delegate call.\"}},\"simulateAndRevert(address,bytes)\":{\"details\":\"Performs a delegatecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). This method reverts with data equal to `abi.encode(bool(success), bytes(response))`. Specifically, the `returndata` after a call to this method will be: `success:bool || response.length:uint256 || response:bytes`.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}},\"swapOwner(address,address,address)\":{\"details\":\"This can only be done via a Safe transaction.\",\"params\":{\"newOwner\":\"New owner address.\",\"oldOwner\":\"Owner address to be replaced.\",\"prevOwner\":\"Owner that pointed to the owner to be replaced in the linked list\"}}},\"title\":\"Safe - A multisignature wallet with support for confirmations using signed messages based on EIP-712.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addOwnerWithThreshold(address,uint256)\":{\"notice\":\"Adds the owner `owner` to the Safe and updates the threshold to `_threshold`.\"},\"approveHash(bytes32)\":{\"notice\":\"Marks hash `hashToApprove` as approved.\"},\"changeThreshold(uint256)\":{\"notice\":\"Changes the threshold of the Safe to `_threshold`.\"},\"checkNSignatures(bytes32,bytes,bytes,uint256)\":{\"notice\":\"Checks whether the signature provided is valid for the provided data and hash. Reverts otherwise.\"},\"checkSignatures(bytes32,bytes,bytes)\":{\"notice\":\"Checks whether the signature provided is valid for the provided data and hash. Reverts otherwise.\"},\"disableModule(address,address)\":{\"notice\":\"Disables the module `module` for the Safe.\"},\"enableModule(address)\":{\"notice\":\"Enables the module `module` for the Safe.\"},\"encodeTransactionData(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)\":{\"notice\":\"Returns the pre-image of the transaction hash (see getTransactionHash).\"},\"execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)\":{\"notice\":\"Executes a `operation` {0: Call, 1: DelegateCall}} transaction to `to` with `value` (Native Currency) and pays `gasPrice` * `gasLimit` in `gasToken` token to `refundReceiver`.\"},\"execTransactionFromModule(address,uint256,bytes,uint8)\":{\"notice\":\"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token)\"},\"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)\":{\"notice\":\"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token) and return data\"},\"getChainId()\":{\"notice\":\"Returns the ID of the chain the contract is currently deployed on.\"},\"getModulesPaginated(address,uint256)\":{\"notice\":\"Returns an array of modules. If all entries fit into a single page, the next pointer will be 0x1. If another page is present, next will be the last element of the returned array.\"},\"getOwners()\":{\"notice\":\"Returns a list of Safe owners.\"},\"getStorageAt(uint256,uint256)\":{\"notice\":\"Reads `length` bytes of storage in the currents contract\"},\"getThreshold()\":{\"notice\":\"Returns the number of required confirmations for a Safe transaction aka the threshold.\"},\"getTransactionHash(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)\":{\"notice\":\"Returns transaction hash to be signed by owners.\"},\"isModuleEnabled(address)\":{\"notice\":\"Returns if an module is enabled\"},\"isOwner(address)\":{\"notice\":\"Returns if `owner` is an owner of the Safe.\"},\"removeOwner(address,address,uint256)\":{\"notice\":\"Removes the owner `owner` from the Safe and updates the threshold to `_threshold`.\"},\"setFallbackHandler(address)\":{\"notice\":\"Set Fallback Handler to `handler` for the Safe.\"},\"setGuard(address)\":{\"notice\":\"Set Transaction Guard `guard` for the Safe. Make sure you trust the guard.\"},\"setup(address[],uint256,address,bytes,address,address,uint256,address)\":{\"notice\":\"Sets an initial storage of the Safe contract.\"},\"swapOwner(address,address,address)\":{\"notice\":\"Replaces the owner `oldOwner` in the Safe with `newOwner`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/Safe.sol\":\"Safe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"AddedOwner","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"approvedHash","type":"bytes32","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"ApproveHash","anonymous":false},{"inputs":[{"internalType":"address","name":"handler","type":"address","indexed":true}],"type":"event","name":"ChangedFallbackHandler","anonymous":false},{"inputs":[{"internalType":"address","name":"guard","type":"address","indexed":true}],"type":"event","name":"ChangedGuard","anonymous":false},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256","indexed":false}],"type":"event","name":"ChangedThreshold","anonymous":false},{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"DisabledModule","anonymous":false},{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"EnabledModule","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"payment","type":"uint256","indexed":false}],"type":"event","name":"ExecutionFailure","anonymous":false},{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"ExecutionFromModuleFailure","anonymous":false},{"inputs":[{"internalType":"address","name":"module","type":"address","indexed":true}],"type":"event","name":"ExecutionFromModuleSuccess","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"payment","type":"uint256","indexed":false}],"type":"event","name":"ExecutionSuccess","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RemovedOwner","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"SafeReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"address[]","name":"owners","type":"address[]","indexed":false},{"internalType":"uint256","name":"threshold","type":"uint256","indexed":false},{"internalType":"address","name":"initializer","type":"address","indexed":false},{"internalType":"address","name":"fallbackHandler","type":"address","indexed":false}],"type":"event","name":"SafeSetup","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true}],"type":"event","name":"SignMsg","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addOwnerWithThreshold"},{"inputs":[{"internalType":"bytes32","name":"hashToApprove","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"approveHash"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"approvedHashes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"changeThreshold"},{"inputs":[{"internalType":"bytes32","name":"dataHash","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signatures","type":"bytes"},{"internalType":"uint256","name":"requiredSignatures","type":"uint256"}],"stateMutability":"view","type":"function","name":"checkNSignatures"},{"inputs":[{"internalType":"bytes32","name":"dataHash","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signatures","type":"bytes"}],"stateMutability":"view","type":"function","name":"checkSignatures"},{"inputs":[{"internalType":"address","name":"prevModule","type":"address"},{"internalType":"address","name":"module","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableModule"},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"enableModule"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"address","name":"refundReceiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"encodeTransactionData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"address payable","name":"refundReceiver","type":"address"},{"internalType":"bytes","name":"signatures","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execTransaction","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"execTransactionFromModule","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"execTransactionFromModuleReturnData","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"start","type":"address"},{"internalType":"uint256","name":"pageSize","type":"uint256"}],"stateMutability":"view","type":"function","name":"getModulesPaginated","outputs":[{"internalType":"address[]","name":"array","type":"address[]"},{"internalType":"address","name":"next","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStorageAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"address","name":"refundReceiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTransactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"stateMutability":"view","type":"function","name":"isModuleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeOwner"},{"inputs":[{"internalType":"address","name":"handler","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFallbackHandler"},{"inputs":[{"internalType":"address","name":"guard","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGuard"},{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"fallbackHandler","type":"address"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"address payable","name":"paymentReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setup"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"signedMessages","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateAndRevert"},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"oldOwner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"swapOwner"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"addOwnerWithThreshold(address,uint256)":{"details":"This can only be done via a Safe transaction.","params":{"_threshold":"New threshold.","owner":"New owner address."}},"approveHash(bytes32)":{"details":"This can be used with a pre-approved hash transaction signature. IMPORTANT: The approved hash stays approved forever. There's no revocation mechanism, so it behaves similarly to ECDSA signatures","params":{"hashToApprove":"The hash to mark as approved for signatures that are verified by this contract."}},"changeThreshold(uint256)":{"details":"This can only be done via a Safe transaction.","params":{"_threshold":"New threshold."}},"checkNSignatures(bytes32,bytes,bytes,uint256)":{"details":"Since the EIP-1271 does an external call, be mindful of reentrancy attacks.","params":{"data":"That should be signed (this is passed to an external validator contract)","dataHash":"Hash of the data (could be either a message hash or transaction hash)","requiredSignatures":"Amount of required valid signatures.","signatures":"Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash."}},"checkSignatures(bytes32,bytes,bytes)":{"params":{"data":"That should be signed (this is passed to an external validator contract)","dataHash":"Hash of the data (could be either a message hash or transaction hash)","signatures":"Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash."}},"disableModule(address,address)":{"details":"This can only be done via a Safe transaction.","params":{"module":"Module to be removed.","prevModule":"Previous module in the modules linked list."}},"domainSeparator()":{"details":"Returns the domain separator for this contract, as defined in the EIP-712 standard.","returns":{"_0":"bytes32 The domain separator hash."}},"enableModule(address)":{"details":"This can only be done via a Safe transaction.","params":{"module":"Module to be whitelisted."}},"encodeTransactionData(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)":{"params":{"_nonce":"Transaction nonce.","baseGas":"Gas costs for that are independent of the transaction execution(e.g. base transaction fee, signature check, payment of the refund)","data":"Data payload.","gasPrice":"Maximum gas price that should be used for this transaction.","gasToken":"Token address (or 0 if ETH) that is used for the payment.","operation":"Operation type.","refundReceiver":"Address of receiver of gas payment (or 0 if tx.origin).","safeTxGas":"Gas that should be used for the safe transaction.","to":"Destination address.","value":"Ether value."},"returns":{"_0":"Transaction hash bytes."}},"execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)":{"details":"The fees are always transferred, even if the user transaction fails. This method doesn't perform any sanity check of the transaction, such as: - if the contract at `to` address has code or not - if the `gasToken` is a contract or not It is the responsibility of the caller to perform such checks.","params":{"baseGas":"Gas costs that are independent of the transaction execution(e.g. base transaction fee, signature check, payment of the refund)","data":"Data payload of Safe transaction.","gasPrice":"Gas price that should be used for the payment calculation.","gasToken":"Token address (or 0 if ETH) that is used for the payment.","operation":"Operation type of Safe transaction.","refundReceiver":"Address of receiver of gas payment (or 0 if tx.origin).","safeTxGas":"Gas that should be used for the Safe transaction.","signatures":"Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash.","to":"Destination address of Safe transaction.","value":"Ether value of Safe transaction."},"returns":{"success":"Boolean indicating transaction's success."}},"execTransactionFromModule(address,uint256,bytes,uint8)":{"details":"Function is virtual to allow overriding for L2 singleton to emit an event for indexing.","params":{"data":"Data payload of module transaction.","operation":"Operation type of module transaction.","to":"Destination address of module transaction.","value":"Ether value of module transaction."},"returns":{"success":"Boolean flag indicating if the call succeeded."}},"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)":{"params":{"data":"Data payload of module transaction.","operation":"Operation type of module transaction.","to":"Destination address of module transaction.","value":"Ether value of module transaction."},"returns":{"returnData":"Data returned by the call.","success":"Boolean flag indicating if the call succeeded."}},"getChainId()":{"returns":{"_0":"The ID of the current chain as a uint256."}},"getModulesPaginated(address,uint256)":{"params":{"pageSize":"Maximum number of modules that should be returned. Has to be > 0","start":"Start of the page. Has to be a module or start pointer (0x1 address)"},"returns":{"array":"Array of modules.","next":"Start of the next page."}},"getOwners()":{"returns":{"_0":"Array of Safe owners."}},"getStorageAt(uint256,uint256)":{"params":{"length":"- the number of words (32 bytes) of data to read","offset":"- the offset in the current contract's storage in words to start reading from"},"returns":{"_0":"the bytes that were read."}},"getThreshold()":{"returns":{"_0":"Threshold number."}},"getTransactionHash(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)":{"params":{"_nonce":"Transaction nonce.","baseGas":"Gas costs for data used to trigger the safe transaction.","data":"Data payload.","gasPrice":"Maximum gas price that should be used for this transaction.","gasToken":"Token address (or 0 if ETH) that is used for the payment.","operation":"Operation type.","refundReceiver":"Address of receiver of gas payment (or 0 if tx.origin).","safeTxGas":"Fas that should be used for the safe transaction.","to":"Destination address.","value":"Ether value."},"returns":{"_0":"Transaction hash."}},"isModuleEnabled(address)":{"returns":{"_0":"True if the module is enabled"}},"isOwner(address)":{"returns":{"_0":"Boolean if owner is an owner of the Safe."}},"removeOwner(address,address,uint256)":{"details":"This can only be done via a Safe transaction.","params":{"_threshold":"New threshold.","owner":"Owner address to be removed.","prevOwner":"Owner that pointed to the owner to be removed in the linked list"}},"setFallbackHandler(address)":{"details":"Only fallback calls without value and with data will be forwarded. This can only be done via a Safe transaction. Cannot be set to the Safe itself.","params":{"handler":"contract to handle fallback calls."}},"setGuard(address)":{"details":"Set a guard that checks transactions before execution This can only be done via a Safe transaction. ⚠️ IMPORTANT: Since a guard has full power to block Safe transaction execution, a broken guard can cause a denial of service for the Safe. Make sure to carefully audit the guard code and design recovery mechanisms.","params":{"guard":"The address of the guard to be used or the 0 address to disable the guard"}},"setup(address[],uint256,address,bytes,address,address,uint256,address)":{"details":"This method can only be called once. If a proxy was created without setting up, anyone can call setup and claim the proxy.","params":{"_owners":"List of Safe owners.","_threshold":"Number of required confirmations for a Safe transaction.","data":"Data payload for optional delegate call.","fallbackHandler":"Handler for fallback calls to this contract","payment":"Value that should be paid","paymentReceiver":"Address that should receive the payment (or 0 if tx.origin)","paymentToken":"Token that should be used for the payment (0 is ETH)","to":"Contract address for optional delegate call."}},"simulateAndRevert(address,bytes)":{"details":"Performs a delegatecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). This method reverts with data equal to `abi.encode(bool(success), bytes(response))`. Specifically, the `returndata` after a call to this method will be: `success:bool || response.length:uint256 || response:bytes`.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}},"swapOwner(address,address,address)":{"details":"This can only be done via a Safe transaction.","params":{"newOwner":"New owner address.","oldOwner":"Owner address to be replaced.","prevOwner":"Owner that pointed to the owner to be replaced in the linked list"}}},"version":1},"userdoc":{"kind":"user","methods":{"addOwnerWithThreshold(address,uint256)":{"notice":"Adds the owner `owner` to the Safe and updates the threshold to `_threshold`."},"approveHash(bytes32)":{"notice":"Marks hash `hashToApprove` as approved."},"changeThreshold(uint256)":{"notice":"Changes the threshold of the Safe to `_threshold`."},"checkNSignatures(bytes32,bytes,bytes,uint256)":{"notice":"Checks whether the signature provided is valid for the provided data and hash. Reverts otherwise."},"checkSignatures(bytes32,bytes,bytes)":{"notice":"Checks whether the signature provided is valid for the provided data and hash. Reverts otherwise."},"disableModule(address,address)":{"notice":"Disables the module `module` for the Safe."},"enableModule(address)":{"notice":"Enables the module `module` for the Safe."},"encodeTransactionData(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)":{"notice":"Returns the pre-image of the transaction hash (see getTransactionHash)."},"execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)":{"notice":"Executes a `operation` {0: Call, 1: DelegateCall}} transaction to `to` with `value` (Native Currency) and pays `gasPrice` * `gasLimit` in `gasToken` token to `refundReceiver`."},"execTransactionFromModule(address,uint256,bytes,uint8)":{"notice":"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token)"},"execTransactionFromModuleReturnData(address,uint256,bytes,uint8)":{"notice":"Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token) and return data"},"getChainId()":{"notice":"Returns the ID of the chain the contract is currently deployed on."},"getModulesPaginated(address,uint256)":{"notice":"Returns an array of modules. If all entries fit into a single page, the next pointer will be 0x1. If another page is present, next will be the last element of the returned array."},"getOwners()":{"notice":"Returns a list of Safe owners."},"getStorageAt(uint256,uint256)":{"notice":"Reads `length` bytes of storage in the currents contract"},"getThreshold()":{"notice":"Returns the number of required confirmations for a Safe transaction aka the threshold."},"getTransactionHash(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,uint256)":{"notice":"Returns transaction hash to be signed by owners."},"isModuleEnabled(address)":{"notice":"Returns if an module is enabled"},"isOwner(address)":{"notice":"Returns if `owner` is an owner of the Safe."},"removeOwner(address,address,uint256)":{"notice":"Removes the owner `owner` from the Safe and updates the threshold to `_threshold`."},"setFallbackHandler(address)":{"notice":"Set Fallback Handler to `handler` for the Safe."},"setGuard(address)":{"notice":"Set Transaction Guard `guard` for the Safe. Make sure you trust the guard."},"setup(address[],uint256,address,bytes,address,address,uint256,address)":{"notice":"Sets an initial storage of the Safe contract."},"swapOwner(address,address,address)":{"notice":"Replaces the owner `oldOwner` in the Safe with `newOwner`."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/Safe.sol":"Safe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":46} \ No newline at end of file diff --git a/out/Safe.t.sol/SafeHelper.json b/out/Safe.t.sol/SafeHelper.json new file mode 100644 index 0000000..e311d08 --- /dev/null +++ b/out/Safe.t.sol/SafeHelper.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"eHandler()":"9fbcc9ad","factory()":"c45a0155","handler()":"c80916d4","multisend()":"294402cc","signMessageLib()":"dfe274a9","singleton()":"b62654fb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{},\"title\":\"Safe - A helper contract for local integration testing with `Safe`.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/Safe.t.sol\":\"SafeHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"test/helpers/Safe.t.sol\":{\"keccak256\":\"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e\",\"dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/Safe.t.sol":"SafeHelper"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"test/helpers/Safe.t.sol":{"keccak256":"0x2b9f320e7a4853f44559aa492570379c060278c025783ab02ebbe211e048acb9","urls":["bzz-raw://fa7eb06167c1b4e1b064ab33cc292ff3e7d38422917ca52088677c4fe8d05e0e","dweb:/ipfs/QmeH6kHuzVE6cJLbtMhsFWnpp9aLVFqPHWZoN34jEVABvo"],"license":"GPL-3.0"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"}},"version":1},"id":118} \ No newline at end of file diff --git a/out/SafeCast.sol/SafeCast.json b/out/SafeCast.sol/SafeCast.json new file mode 100644 index 0000000..68bd27e --- /dev/null +++ b/out/SafeCast.sol/SafeCast.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e002e1b7cc08d3029a9056554d488c75ce0d4819a8fb468120ce745cb2781f6964736f6c63430008130033","sourceMap":"927:34153:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;927:34153:6;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e002e1b7cc08d3029a9056554d488c75ce0d4819a8fb468120ce745cb2781f6964736f6c63430008130033","sourceMap":"927:34153:6:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":"SafeCast"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"}},"version":1},"id":6} \ No newline at end of file diff --git a/out/SafeLib.t.sol/SafeLib.json b/out/SafeLib.t.sol/SafeLib.json new file mode 100644 index 0000000..9686781 --- /dev/null +++ b/out/SafeLib.t.sol/SafeLib.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a1141f2bab4ad88564aaee0ccb3df252a95e5ad0fe56818ef385f91e49c9ea264736f6c63430008130033","sourceMap":"565:2764:121:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;565:2764:121;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a1141f2bab4ad88564aaee0ccb3df252a95e5ad0fe56818ef385f91e49c9ea264736f6c63430008130033","sourceMap":"565:2764:121:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/SafeLib.t.sol\":\"SafeLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/SafeLib.t.sol":"SafeLib"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"}},"version":1},"id":121} \ No newline at end of file diff --git a/out/SafeMath.sol/SafeMath.json b/out/SafeMath.sol/SafeMath.json new file mode 100644 index 0000000..a5d1a3f --- /dev/null +++ b/out/SafeMath.sol/SafeMath.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aa9e99d3aed1d9decdb90de2ab41177e5dca7e3859af084ca9ffca7fcee5c3ff64736f6c63430008130033","sourceMap":"190:1563:59:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;190:1563:59;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aa9e99d3aed1d9decdb90de2ab41177e5dca7e3859af084ca9ffca7fcee5c3ff64736f6c63430008130033","sourceMap":"190:1563:59:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeMath\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Math operations with safety checks that revert on error (overflow/underflow)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/external/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/external/SafeMath.sol":"SafeMath"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"}},"version":1},"id":59} \ No newline at end of file diff --git a/out/SafeProxy.sol/IProxy.json b/out/SafeProxy.sol/IProxy.json new file mode 100644 index 0000000..03a23e5 --- /dev/null +++ b/out/SafeProxy.sol/IProxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"masterCopy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"masterCopy()":"a619486e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"masterCopy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IProxy - Helper interface to access the singleton address of the Proxy on-chain.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/proxies/SafeProxy.sol\":\"IProxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"masterCopy","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/proxies/SafeProxy.sol":"IProxy"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"}},"version":1},"id":79} \ No newline at end of file diff --git a/out/SafeProxy.sol/SafeProxy.json b/out/SafeProxy.sol/SafeProxy.json new file mode 100644 index 0000000..a15575a --- /dev/null +++ b/out/SafeProxy.sol/SafeProxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_singleton","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033","sourceMap":"520:1508:79:-:0;;;965:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1015:24:79;;1007:71;;;;-1:-1:-1;;;1007:71:79;;511:2:124;1007:71:79;;;493:21:124;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:124;;;633:32;682:19;;1007:71:79;;;;;;;;1088:9;:22;;-1:-1:-1;;;;;;1088:22:79;-1:-1:-1;;;;;1088:22:79;;;;;;;;;;520:1508;;14:290:124;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:124;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:124:o;309:398::-;520:1508:79;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033","sourceMap":"520:1508:79:-:0;;;1363:1;1367:42;1363:1;1357:8;1353:57;1545:66;1363:1;1528:15;1525:87;1522:176;;1641:10;1363:1;1631:21;1679:4;1363:1;1669:15;1522:176;1730:14;1363:1;;1711:34;1363:1;;1730:14;1363:1;1793:10;1786:5;1773:56;1758:71;;1863:16;1363:1;;1842:38;1899:7;1893:77;;1939:16;1363:1;1929:27;1893:77;;1993:16;1363:1;1983:27","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"author\":\"Stefan George - Richard Meissner - \",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_singleton\":\"Singleton address.\"}}},\"title\":\"SafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor function sets address of singleton contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/proxies/SafeProxy.sol\":\"SafeProxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_singleton","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"_singleton":"Singleton address."}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructor function sets address of singleton contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/proxies/SafeProxy.sol":"SafeProxy"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"}},"version":1},"id":79} \ No newline at end of file diff --git a/out/SafeProxyFactory.sol/SafeProxyFactory.json b/out/SafeProxyFactory.sol/SafeProxyFactory.json new file mode 100644 index 0000000..771e5e1 --- /dev/null +++ b/out/SafeProxyFactory.sol/SafeProxyFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"createChainSpecificProxyWithNonce","inputs":[{"name":"_singleton","type":"address","internalType":"address"},{"name":"initializer","type":"bytes","internalType":"bytes"},{"name":"saltNonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"proxy","type":"address","internalType":"contract SafeProxy"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProxyWithCallback","inputs":[{"name":"_singleton","type":"address","internalType":"address"},{"name":"initializer","type":"bytes","internalType":"bytes"},{"name":"saltNonce","type":"uint256","internalType":"uint256"},{"name":"callback","type":"address","internalType":"contract IProxyCreationCallback"}],"outputs":[{"name":"proxy","type":"address","internalType":"contract SafeProxy"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProxyWithNonce","inputs":[{"name":"_singleton","type":"address","internalType":"address"},{"name":"initializer","type":"bytes","internalType":"bytes"},{"name":"saltNonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"proxy","type":"address","internalType":"contract SafeProxy"}],"stateMutability":"nonpayable"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxyCreationCode","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"event","name":"ProxyCreation","inputs":[{"name":"proxy","type":"address","indexed":true,"internalType":"contract SafeProxy"},{"name":"singleton","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033","sourceMap":"318:6095:80:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033","sourceMap":"318:6095:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:471;;;;;;:::i;:::-;;:::i;:::-;;;1875:42:124;1863:55;;;1845:74;;1833:2;1818:18;2515:471:80;;;;;;;;6200:211;;;6367:9;2076:25:124;;2064:2;2049:18;6200:211:80;1930:177:124;565:116:80;;;:::i;:::-;;;;;;;:::i;4936:505::-;;;;;;:::i;:::-;;:::i;3742:528::-;;;;;;:::i;:::-;;:::i;2515:471::-;2626:15;2795:12;2847:11;2837:22;;;;;;2861:9;2820:51;;;;;;;;3782:19:124;;;3826:2;3817:12;;3810:28;3863:2;3854:12;;3625:247;2820:51:80;;;;;;;;;;;;;2810:62;;;;;;2795:77;;2890:42;2902:10;2914:11;2927:4;2890:11;:42::i;:::-;2947:32;;;1863:55:124;;;1845:74;;2882:50:80;;-1:-1:-1;2947:32:80;;;;;;1833:2:124;1818:18;2947:32:80;;;;;;;2643:343;2515:471;;;;;:::o;565:116::-;615:12;646:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;565:116;-1:-1:-1;565:116:80:o;4936:505::-;5121:15;5148:29;5215:9;5226:8;5198:37;;;;;;;;4297:19:124;;;4354:2;4350:15;4367:66;4346:88;4341:2;4332:12;;4325:110;4460:2;4451:12;;4108:361;5198:37:80;;;;;;;;;;;;;5188:48;;;;;;5180:57;;5148:89;;5255:68;5276:10;5288:11;5301:21;5255:20;:68::i;:::-;5247:76;-1:-1:-1;5337:31:80;;;;5333:101;;5370:64;;;;;:21;;;;;;:64;;5392:5;;5399:10;;5411:11;;5424:9;;5370:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5333:101;5138:303;4936:505;;;;;;:::o;3742:528::-;3896:15;4065:12;4117:11;4107:22;;;;;;4131:9;4142:12;6367:9;;6200:211;4142:12;4090:65;;;;;;5202:19:124;;;;5237:12;;5230:28;;;;5274:12;;;5267:28;5311:12;;4090:65:80;5017:312:124;1185:858:80;1284:15;5978:20;;1311:66;;;;;;;5536:2:124;1311:66:80;;;5518:21:124;5575:2;5555:18;;;5548:30;5614:33;5594:18;;;5587:61;5665:18;;1311:66:80;;;;;;;;;1388:27;1435:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1418:76;;1435:28;1465;;;;1435;1418:76;;:::i;:::-;;;;;;;;;;;;;1388:106;;1655:4;1638:14;1632:21;1615:14;1609:4;1605:25;1600:3;1592:68;1583:77;-1:-1:-1;1687:28:80;;;1679:60;;;;;;;6284:2:124;1679:60:80;;;6266:21:124;6323:2;6303:18;;;6296:30;6362:21;6342:18;;;6335:49;6401:18;;1679:60:80;6082:343:124;1679:60:80;1754:18;;:22;1750:287;;1958:1;1954;1951;1937:11;1931:18;1924:4;1911:11;1907:22;1904:1;1897:5;1890;1885:71;1882:78;1879:134;;1993:1;1990;1983:12;1879:134;1301:742;1185:858;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:154:124:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:184::-;225:77;222:1;215:88;322:4;319:1;312:15;346:4;343:1;336:15;362:777;404:5;457:3;450:4;442:6;438:17;434:27;424:55;;475:1;472;465:12;424:55;511:6;498:20;537:18;574:2;570;567:10;564:36;;;580:18;;:::i;:::-;714:2;708:9;776:4;768:13;;619:66;764:22;;;788:2;760:31;756:40;744:53;;;812:18;;;832:22;;;809:46;806:72;;;858:18;;:::i;:::-;898:10;894:2;887:22;933:2;925:6;918:18;979:3;972:4;967:2;959:6;955:15;951:26;948:35;945:55;;;996:1;993;986:12;945:55;1060:2;1053:4;1045:6;1041:17;1034:4;1026:6;1022:17;1009:54;1107:1;1100:4;1095:2;1087:6;1083:15;1079:26;1072:37;1127:6;1118:15;;;;;;362:777;;;;:::o;1144:523::-;1230:6;1238;1246;1299:2;1287:9;1278:7;1274:23;1270:32;1267:52;;;1315:1;1312;1305:12;1267:52;1354:9;1341:23;1373:31;1398:5;1373:31;:::i;:::-;1423:5;-1:-1:-1;1479:2:124;1464:18;;1451:32;1506:18;1495:30;;1492:50;;;1538:1;1535;1528:12;1492:50;1561:49;1602:7;1593:6;1582:9;1578:22;1561:49;:::i;:::-;1551:59;;;1657:2;1646:9;1642:18;1629:32;1619:42;;1144:523;;;;;:::o;2112:250::-;2197:1;2207:113;2221:6;2218:1;2215:13;2207:113;;;2297:11;;;2291:18;2278:11;;;2271:39;2243:2;2236:10;2207:113;;;-1:-1:-1;;2354:1:124;2336:16;;2329:27;2112:250::o;2367:329::-;2408:3;2446:5;2440:12;2473:6;2468:3;2461:19;2489:76;2558:6;2551:4;2546:3;2542:14;2535:4;2528:5;2524:16;2489:76;:::i;:::-;2610:2;2598:15;2615:66;2594:88;2585:98;;;;2685:4;2581:109;;2367:329;-1:-1:-1;;2367:329:124:o;2701:217::-;2848:2;2837:9;2830:21;2811:4;2868:44;2908:2;2897:9;2893:18;2885:6;2868:44;:::i;:::-;2860:52;2701:217;-1:-1:-1;;;2701:217:124:o;2923:697::-;3050:6;3058;3066;3074;3127:3;3115:9;3106:7;3102:23;3098:33;3095:53;;;3144:1;3141;3134:12;3095:53;3183:9;3170:23;3202:31;3227:5;3202:31;:::i;:::-;3252:5;-1:-1:-1;3308:2:124;3293:18;;3280:32;3335:18;3324:30;;3321:50;;;3367:1;3364;3357:12;3321:50;3390:49;3431:7;3422:6;3411:9;3407:22;3390:49;:::i;:::-;3380:59;;;3486:2;3475:9;3471:18;3458:32;3448:42;;3542:2;3531:9;3527:18;3514:32;3555:33;3580:7;3555:33;:::i;:::-;2923:697;;;;-1:-1:-1;2923:697:124;;-1:-1:-1;;2923:697:124:o;4474:538::-;4695:4;4724:42;4805:2;4797:6;4793:15;4782:9;4775:34;4857:2;4849:6;4845:15;4840:2;4829:9;4825:18;4818:43;;4897:3;4892:2;4881:9;4877:18;4870:31;4918:45;4958:3;4947:9;4943:19;4935:6;4918:45;:::i;:::-;4910:53;;4999:6;4994:2;4983:9;4979:18;4972:34;4474:538;;;;;;;:::o;5694:383::-;5851:3;5889:6;5883:13;5905:66;5964:6;5959:3;5952:4;5944:6;5940:17;5905:66;:::i;:::-;5993:16;;;;6018:21;;;-1:-1:-1;6066:4:124;6055:16;;5694:383;-1:-1:-1;5694:383:124:o","linkReferences":{}},"methodIdentifiers":{"createChainSpecificProxyWithNonce(address,bytes,uint256)":"ec9e80bb","createProxyWithCallback(address,bytes,uint256,address)":"d18af54d","createProxyWithNonce(address,bytes,uint256)":"1688f0b9","getChainId()":"3408e470","proxyCreationCode()":"53e5d935"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"singleton\",\"type\":\"address\"}],\"name\":\"ProxyCreation\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"createChainSpecificProxyWithNonce\",\"outputs\":[{\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"},{\"internalType\":\"contract IProxyCreationCallback\",\"name\":\"callback\",\"type\":\"address\"}],\"name\":\"createProxyWithCallback\",\"outputs\":[{\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_singleton\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initializer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"}],\"name\":\"createProxyWithNonce\",\"outputs\":[{\"internalType\":\"contract SafeProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - @Georgi87\",\"kind\":\"dev\",\"methods\":{\"createChainSpecificProxyWithNonce(address,bytes,uint256)\":{\"details\":\"Allows to create a new proxy contract that should exist only on 1 network (e.g. specific governance or admin accounts) by including the chain id in the create2 salt. Such proxies cannot be created on other networks by replaying the transaction.\",\"params\":{\"_singleton\":\"Address of singleton contract. Must be deployed at the time of execution.\",\"initializer\":\"Payload for a message call to be sent to a new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxyWithCallback(address,bytes,uint256,address)\":{\"params\":{\"_singleton\":\"Address of singleton contract. Must be deployed at the time of execution.\",\"callback\":\"Callback that will be invoked after the new proxy contract has been successfully deployed and initialized.\",\"initializer\":\"Payload for a message call to be sent to a new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"createProxyWithNonce(address,bytes,uint256)\":{\"params\":{\"_singleton\":\"Address of singleton contract. Must be deployed at the time of execution.\",\"initializer\":\"Payload for a message call to be sent to a new proxy contract.\",\"saltNonce\":\"Nonce that will be used to generate the salt to calculate the address of the new proxy contract.\"}},\"getChainId()\":{\"returns\":{\"_0\":\"The ID of the current chain as a uint256.\"}},\"proxyCreationCode()\":{\"details\":\"Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address.\"}},\"title\":\"Proxy Factory - Allows to create a new proxy contract and execute a message call to the new proxy within one transaction.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createChainSpecificProxyWithNonce(address,bytes,uint256)\":{\"notice\":\"Deploys a new chain-specific proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy.\"},\"createProxyWithCallback(address,bytes,uint256,address)\":{\"notice\":\"Deploy a new proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy and calls a specified callback address `callback`.\"},\"createProxyWithNonce(address,bytes,uint256)\":{\"notice\":\"Deploys a new proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy.\"},\"getChainId()\":{\"notice\":\"Returns the ID of the chain the contract is currently deployed on.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":\"SafeProxyFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract SafeProxy","name":"proxy","type":"address","indexed":true},{"internalType":"address","name":"singleton","type":"address","indexed":false}],"type":"event","name":"ProxyCreation","anonymous":false},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createChainSpecificProxyWithNonce","outputs":[{"internalType":"contract SafeProxy","name":"proxy","type":"address"}]},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"},{"internalType":"contract IProxyCreationCallback","name":"callback","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProxyWithCallback","outputs":[{"internalType":"contract SafeProxy","name":"proxy","type":"address"}]},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createProxyWithNonce","outputs":[{"internalType":"contract SafeProxy","name":"proxy","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"proxyCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"createChainSpecificProxyWithNonce(address,bytes,uint256)":{"details":"Allows to create a new proxy contract that should exist only on 1 network (e.g. specific governance or admin accounts) by including the chain id in the create2 salt. Such proxies cannot be created on other networks by replaying the transaction.","params":{"_singleton":"Address of singleton contract. Must be deployed at the time of execution.","initializer":"Payload for a message call to be sent to a new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"createProxyWithCallback(address,bytes,uint256,address)":{"params":{"_singleton":"Address of singleton contract. Must be deployed at the time of execution.","callback":"Callback that will be invoked after the new proxy contract has been successfully deployed and initialized.","initializer":"Payload for a message call to be sent to a new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"createProxyWithNonce(address,bytes,uint256)":{"params":{"_singleton":"Address of singleton contract. Must be deployed at the time of execution.","initializer":"Payload for a message call to be sent to a new proxy contract.","saltNonce":"Nonce that will be used to generate the salt to calculate the address of the new proxy contract."}},"getChainId()":{"returns":{"_0":"The ID of the current chain as a uint256."}},"proxyCreationCode()":{"details":"Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address."}},"version":1},"userdoc":{"kind":"user","methods":{"createChainSpecificProxyWithNonce(address,bytes,uint256)":{"notice":"Deploys a new chain-specific proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy."},"createProxyWithCallback(address,bytes,uint256,address)":{"notice":"Deploy a new proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy and calls a specified callback address `callback`."},"createProxyWithNonce(address,bytes,uint256)":{"notice":"Deploys a new proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy."},"getChainId()":{"notice":"Returns the ID of the chain the contract is currently deployed on."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/proxies/SafeProxyFactory.sol":"SafeProxyFactory"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"}},"version":1},"id":80} \ No newline at end of file diff --git a/out/SafeStorage.sol/SafeStorage.json b/out/SafeStorage.sol/SafeStorage.json new file mode 100644 index 0000000..f4ecf66 --- /dev/null +++ b/out/SafeStorage.sol/SafeStorage.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220496002b04fb150b5b5d0fc78a78b5977c4313d36007cda49c696899d255792ad64736f6c63430008130033","sourceMap":"298:563:76:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600080fdfea2646970667358221220496002b04fb150b5b5d0fc78a78b5977c4313d36007cda49c696899d255792ad64736f6c63430008130033","sourceMap":"298:563:76:-:0;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"details\":\"Should be always the first base contract of a library that is used with a Safe.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeStorage - Storage layout of the Safe contracts to be used in libraries.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/libraries/SafeStorage.sol\":\"SafeStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/libraries/SafeStorage.sol":"SafeStorage"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"}},"version":1},"id":76} \ No newline at end of file diff --git a/out/Script.sol/Script.json b/out/Script.sol/Script.json new file mode 100644 index 0000000..9b66827 --- /dev/null +++ b/out/Script.sol/Script.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Script.sol\":\"Script\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Script.sol":"Script"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file diff --git a/out/SecuredTokenTransfer.sol/SecuredTokenTransfer.json b/out/SecuredTokenTransfer.sol/SecuredTokenTransfer.json new file mode 100644 index 0000000..112abc7 --- /dev/null +++ b/out/SecuredTokenTransfer.sol/SecuredTokenTransfer.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SecuredTokenTransfer - Secure token transfer.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":\"SecuredTokenTransfer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/common/SecuredTokenTransfer.sol":"SecuredTokenTransfer"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"}},"version":1},"id":54} \ No newline at end of file diff --git a/out/SelfAuthorized.sol/SelfAuthorized.json b/out/SelfAuthorized.sol/SelfAuthorized.json new file mode 100644 index 0000000..1c4d1bc --- /dev/null +++ b/out/SelfAuthorized.sol/SelfAuthorized.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SelfAuthorized - Authorizes current contract to perform actions to itself.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/common/SelfAuthorized.sol\":\"SelfAuthorized\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/common/SelfAuthorized.sol":"SelfAuthorized"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"}},"version":1},"id":55} \ No newline at end of file diff --git a/out/SignMessageLib.sol/SignMessageLib.json b/out/SignMessageLib.sol/SignMessageLib.json new file mode 100644 index 0000000..3c7a7a0 --- /dev/null +++ b/out/SignMessageLib.sol/SignMessageLib.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getMessageHash","inputs":[{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"signMessage","inputs":[{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SignMsg","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c63430008130033","sourceMap":"282:1236:77:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c63430008130033","sourceMap":"282:1236:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1200:316;;;;;;:::i;:::-;;:::i;:::-;;;1334:25:124;;;1322:2;1307:18;1200:316:77;;;;;;;852:176;;;;;;:::i;:::-;;:::i;:::-;;1200:316;1267:7;1286:23;420:66;1333:17;;1362:7;1352:18;;;;;;1322:49;;;;;;;;2140:25:124;;;2196:2;2181:18;;2174:34;2128:2;2113:18;;1966:248;1322:49:77;;;;;;;;;;;;;;1312:60;;1322:49;1312:60;;;;1444:46;;;;;1312:60;;-1:-1:-1;1416:12:77;;1430;;1465:4;;1444:44;;:46;;;;;;;;;;;1465:4;1444:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1399:109;;2627:66:124;2714:15;;;1399:109:77;;;2702:28:124;2759:15;;;;2746:11;;;2739:36;2791:11;;;2784:27;2827:12;;;2820:28;;;2864:12;;1399:109:77;;;;;;;;;;;;1389:120;;;;;;1382:127;;;1200:316;;;:::o;852:176::-;914:15;932:21;947:5;;932:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;932:14:77;;-1:-1:-1;;;932:21:77:i;:::-;963:23;;;;:14;:23;;;;;;989:1;963:27;;1005:16;914:39;;-1:-1:-1;914:39:77;;1005:16;;963:23;1005:16;904:124;852:176;;:::o;14:184:124:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:980;271:6;324:2;312:9;303:7;299:23;295:32;292:52;;;340:1;337;330:12;292:52;380:9;367:23;409:18;450:2;442:6;439:14;436:34;;;466:1;463;456:12;436:34;504:6;493:9;489:22;479:32;;549:7;542:4;538:2;534:13;530:27;520:55;;571:1;568;561:12;520:55;607:2;594:16;629:2;625;622:10;619:36;;;635:18;;:::i;:::-;769:2;763:9;831:4;823:13;;674:66;819:22;;;843:2;815:31;811:40;799:53;;;867:18;;;887:22;;;864:46;861:72;;;913:18;;:::i;:::-;953:10;949:2;942:22;988:2;980:6;973:18;1028:7;1023:2;1018;1014;1010:11;1006:20;1003:33;1000:53;;;1049:1;1046;1039:12;1000:53;1105:2;1100;1096;1092:11;1087:2;1079:6;1075:15;1062:46;1150:1;1128:15;;;1145:2;1124:24;1117:35;;;;-1:-1:-1;1132:6:124;203:980;-1:-1:-1;;;;;203:980:124:o;1370:591::-;1440:6;1448;1501:2;1489:9;1480:7;1476:23;1472:32;1469:52;;;1517:1;1514;1507:12;1469:52;1557:9;1544:23;1586:18;1627:2;1619:6;1616:14;1613:34;;;1643:1;1640;1633:12;1613:34;1681:6;1670:9;1666:22;1656:32;;1726:7;1719:4;1715:2;1711:13;1707:27;1697:55;;1748:1;1745;1738:12;1697:55;1788:2;1775:16;1814:2;1806:6;1803:14;1800:34;;;1830:1;1827;1820:12;1800:34;1875:7;1870:2;1861:6;1857:2;1853:15;1849:24;1846:37;1843:57;;;1896:1;1893;1886:12;1843:57;1927:2;1919:11;;;;;1949:6;;-1:-1:-1;1370:591:124;;-1:-1:-1;;;;1370:591:124:o;2219:184::-;2289:6;2342:2;2330:9;2321:7;2317:23;2313:32;2310:52;;;2358:1;2355;2348:12;2310:52;-1:-1:-1;2381:16:124;;2219:184;-1:-1:-1;2219:184:124:o","linkReferences":{}},"methodIdentifiers":{"getMessageHash(bytes)":"0a1028c4","signMessage(bytes)":"85a5affe"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignMsg\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"signMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{\"getMessageHash(bytes)\":{\"details\":\"Returns hash of a message that can be signed by owners.\",\"params\":{\"message\":\"Message that should be hashed.\"},\"returns\":{\"_0\":\"Message hash.\"}},\"signMessage(bytes)\":{\"details\":\"Can be verified using EIP-1271 validation method by passing the pre-image of the message hash and empty bytes as the signature.\",\"params\":{\"_data\":\"Arbitrary length data that should be marked as signed on the behalf of address(this).\"}}},\"title\":\"SignMessageLib - Allows to sign messages on-chain by writing the signed message hashes on-chain.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"signMessage(bytes)\":{\"notice\":\"Marks a message (`_data`) as signed.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/libraries/SignMessageLib.sol\":\"SignMessageLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true}],"type":"event","name":"SignMsg","anonymous":false},{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function","name":"getMessageHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"signMessage"}],"devdoc":{"kind":"dev","methods":{"getMessageHash(bytes)":{"details":"Returns hash of a message that can be signed by owners.","params":{"message":"Message that should be hashed."},"returns":{"_0":"Message hash."}},"signMessage(bytes)":{"details":"Can be verified using EIP-1271 validation method by passing the pre-image of the message hash and empty bytes as the signature.","params":{"_data":"Arbitrary length data that should be marked as signed on the behalf of address(this)."}}},"version":1},"userdoc":{"kind":"user","methods":{"signMessage(bytes)":{"notice":"Marks a message (`_data`) as signed."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/libraries/SignMessageLib.sol":"SignMessageLib"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"}},"version":1},"id":77} \ No newline at end of file diff --git a/out/SignatureDecoder.sol/SignatureDecoder.json b/out/SignatureDecoder.sol/SignatureDecoder.json new file mode 100644 index 0000000..75c02c8 --- /dev/null +++ b/out/SignatureDecoder.sol/SignatureDecoder.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SignatureDecoder - Decodes signatures encoded as bytes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/common/SignatureDecoder.sol\":\"SignatureDecoder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/common/SignatureDecoder.sol":"SignatureDecoder"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"}},"version":1},"id":56} \ No newline at end of file diff --git a/out/SignatureVerifierMuxer.sol/EIP712.json b/out/SignatureVerifierMuxer.sol/EIP712.json new file mode 100644 index 0000000..da182a3 --- /dev/null +++ b/out/SignatureVerifierMuxer.sol/EIP712.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ac84cfedffc0c1c9b68da1ca44a2c2c17e44862c0d83e7dcbe776ec714dfef5364736f6c63430008130033","sourceMap":"8234:285:68:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;8234:285:68;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ac84cfedffc0c1c9b68da1ca44a2c2c17e44862c0d83e7dcbe776ec714dfef5364736f6c63430008130033","sourceMap":"8234:285:68:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":\"EIP712\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":"EIP712"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":68} \ No newline at end of file diff --git a/out/SignatureVerifierMuxer.sol/ERC1271.json b/out/SignatureVerifierMuxer.sol/ERC1271.json new file mode 100644 index 0000000..a7e6978 --- /dev/null +++ b/out/SignatureVerifierMuxer.sol/ERC1271.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":\"ERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":"ERC1271"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":68} \ No newline at end of file diff --git a/out/SignatureVerifierMuxer.sol/ISafeSignatureVerifier.json b/out/SignatureVerifierMuxer.sol/ISafeSignatureVerifier.json new file mode 100644 index 0000000..219414a --- /dev/null +++ b/out/SignatureVerifierMuxer.sol/ISafeSignatureVerifier.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isValidSafeSignature","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"sender","type":"address","internalType":"address"},{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"},{"name":"typeHash","type":"bytes32","internalType":"bytes32"},{"name":"encodeData","type":"bytes","internalType":"bytes"},{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magic","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)":"53f00b14"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"typeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"encodeData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"isValidSafeSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magic\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{\"isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)\":{\"details\":\"If called by `SignatureVerifierMuxer`, the following has already been checked: _hash = h(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, h(typeHash || encodeData)));\",\"params\":{\"_hash\":\"The EIP-712 hash whose signature will be verified\",\"domainSeparator\":\"The EIP-712 domainSeparator\",\"encodeData\":\"The EIP-712 encoded data\",\"payload\":\"An arbitrary payload that can be used to pass additional data to the verifier\",\"safe\":\"The Safe that has delegated the signature verification\",\"sender\":\"The address that originally called the Safe's `isValidSignature` method\",\"typeHash\":\"The EIP-712 typeHash\"},\"returns\":{\"magic\":\"The magic value that should be returned if the signature is valid (0x1626ba7e)\"}}},\"title\":\"Safe Signature Verifier Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This interface provides an standard for external contracts that are verifying signatures for a Safe.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":\"ISafeSignatureVerifier\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"bytes32","name":"typeHash","type":"bytes32"},{"internalType":"bytes","name":"encodeData","type":"bytes"},{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSafeSignature","outputs":[{"internalType":"bytes4","name":"magic","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)":{"details":"If called by `SignatureVerifierMuxer`, the following has already been checked: _hash = h(abi.encodePacked(\"\\x19\\x01\", domainSeparator, h(typeHash || encodeData)));","params":{"_hash":"The EIP-712 hash whose signature will be verified","domainSeparator":"The EIP-712 domainSeparator","encodeData":"The EIP-712 encoded data","payload":"An arbitrary payload that can be used to pass additional data to the verifier","safe":"The Safe that has delegated the signature verification","sender":"The address that originally called the Safe's `isValidSignature` method","typeHash":"The EIP-712 typeHash"},"returns":{"magic":"The magic value that should be returned if the signature is valid (0x1626ba7e)"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":"ISafeSignatureVerifier"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":68} \ No newline at end of file diff --git a/out/SignatureVerifierMuxer.sol/ISignatureVerifierMuxer.json b/out/SignatureVerifierMuxer.sol/ISignatureVerifierMuxer.json new file mode 100644 index 0000000..390b05c --- /dev/null +++ b/out/SignatureVerifierMuxer.sol/ISignatureVerifierMuxer.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"domainVerifiers","inputs":[{"name":"safe","type":"address","internalType":"contract Safe"},{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"contract ISafeSignatureVerifier"}],"stateMutability":"view"},{"type":"function","name":"setDomainVerifier","inputs":[{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"},{"name":"verifier","type":"address","internalType":"contract ISafeSignatureVerifier"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"domainVerifiers(address,bytes32)":"51cad5ee","setDomainVerifier(bytes32,address)":"3365582c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"}],\"name\":\"domainVerifiers\",\"outputs\":[{\"internalType\":\"contract ISafeSignatureVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISafeSignatureVerifier\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"setDomainVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":\"ISignatureVerifierMuxer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"}],"stateMutability":"view","type":"function","name":"domainVerifiers","outputs":[{"internalType":"contract ISafeSignatureVerifier","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"contract ISafeSignatureVerifier","name":"verifier","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDomainVerifier"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":"ISignatureVerifierMuxer"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":68} \ No newline at end of file diff --git a/out/SignatureVerifierMuxer.sol/SignatureVerifierMuxer.json b/out/SignatureVerifierMuxer.sol/SignatureVerifierMuxer.json new file mode 100644 index 0000000..920a7af --- /dev/null +++ b/out/SignatureVerifierMuxer.sol/SignatureVerifierMuxer.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"domainVerifiers","inputs":[{"name":"","type":"address","internalType":"contract Safe"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"contract ISafeSignatureVerifier"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magic","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"safeMethods","inputs":[{"name":"","type":"address","internalType":"contract Safe"},{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setDomainVerifier","inputs":[{"name":"domainSeparator","type":"bytes32","internalType":"bytes32"},{"name":"newVerifier","type":"address","internalType":"contract ISafeSignatureVerifier"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddedDomainVerifier","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"domainSeparator","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"verifier","type":"address","indexed":false,"internalType":"contract ISafeSignatureVerifier"}],"anonymous":false},{"type":"event","name":"AddedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"method","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ChangedDomainVerifier","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"domainSeparator","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"oldVerifier","type":"address","indexed":false,"internalType":"contract ISafeSignatureVerifier"},{"name":"newVerifier","type":"address","indexed":false,"internalType":"contract ISafeSignatureVerifier"}],"anonymous":false},{"type":"event","name":"ChangedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"oldMethod","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newMethod","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemovedDomainVerifier","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"domainSeparator","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemovedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"domainVerifiers(address,bytes32)":"51cad5ee","isValidSignature(bytes32,bytes)":"1626ba7e","safeMethods(address,bytes4)":"0a3fe054","setDomainVerifier(bytes32,address)":"3365582c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract ISafeSignatureVerifier\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"AddedDomainVerifier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"method\",\"type\":\"bytes32\"}],\"name\":\"AddedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract ISafeSignatureVerifier\",\"name\":\"oldVerifier\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISafeSignatureVerifier\",\"name\":\"newVerifier\",\"type\":\"address\"}],\"name\":\"ChangedDomainVerifier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldMethod\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newMethod\",\"type\":\"bytes32\"}],\"name\":\"ChangedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"}],\"name\":\"RemovedDomainVerifier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"RemovedSafeMethod\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"domainVerifiers\",\"outputs\":[{\"internalType\":\"contract ISafeSignatureVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magic\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"safeMethods\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISafeSignatureVerifier\",\"name\":\"newVerifier\",\"type\":\"address\"}],\"name\":\"setDomainVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"details\":\"This multiplexer enforces a strict authorisation per domainSeparator. This is to prevent a malicious `ISafeSignatureVerifier` from being able to verify signatures for any domainSeparator. This does not prevent an `ISafeSignatureVerifier` from being able to verify signatures for multiple domainSeparators, however each domainSeparator requires specific approval by Safe.\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"The signature format is the same as the one used by the Safe contract\",\"params\":{\"_hash\":\"Hash of the data that is signed\",\"signature\":\"The signature to be verified\"},\"returns\":{\"magic\":\"Standardised ERC1271 return value\"}},\"setDomainVerifier(bytes32,address)\":{\"params\":{\"domainSeparator\":\"The domainSeparator authorised for the `ISafeSignatureVerifier`\",\"newVerifier\":\"A contract that implements `ISafeSignatureVerifier`\"}}},\"title\":\"ERC-1271 Signature Verifier Multiplexer (Muxer)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Implements ERC1271 interface for smart contract EIP-712 signature validation\"},\"setDomainVerifier(bytes32,address)\":{\"notice\":\"Setter for the signature muxer\"}},\"notice\":\"Allows delegating EIP-712 domains to an arbitrary `ISafeSignatureVerifier`\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":\"SignatureVerifierMuxer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32","indexed":false},{"internalType":"contract ISafeSignatureVerifier","name":"verifier","type":"address","indexed":false}],"type":"event","name":"AddedDomainVerifier","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"method","type":"bytes32","indexed":false}],"type":"event","name":"AddedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32","indexed":false},{"internalType":"contract ISafeSignatureVerifier","name":"oldVerifier","type":"address","indexed":false},{"internalType":"contract ISafeSignatureVerifier","name":"newVerifier","type":"address","indexed":false}],"type":"event","name":"ChangedDomainVerifier","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"oldMethod","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newMethod","type":"bytes32","indexed":false}],"type":"event","name":"ChangedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32","indexed":false}],"type":"event","name":"RemovedDomainVerifier","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false}],"type":"event","name":"RemovedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"domainVerifiers","outputs":[{"internalType":"contract ISafeSignatureVerifier","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magic","type":"bytes4"}]},{"inputs":[{"internalType":"contract Safe","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function","name":"safeMethods","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"contract ISafeSignatureVerifier","name":"newVerifier","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDomainVerifier"}],"devdoc":{"kind":"dev","methods":{"isValidSignature(bytes32,bytes)":{"details":"The signature format is the same as the one used by the Safe contract","params":{"_hash":"Hash of the data that is signed","signature":"The signature to be verified"},"returns":{"magic":"Standardised ERC1271 return value"}},"setDomainVerifier(bytes32,address)":{"params":{"domainSeparator":"The domainSeparator authorised for the `ISafeSignatureVerifier`","newVerifier":"A contract that implements `ISafeSignatureVerifier`"}}},"version":1},"userdoc":{"kind":"user","methods":{"isValidSignature(bytes32,bytes)":{"notice":"Implements ERC1271 interface for smart contract EIP-712 signature validation"},"setDomainVerifier(bytes32,address)":{"notice":"Setter for the signature muxer"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":"SignatureVerifierMuxer"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":68} \ No newline at end of file diff --git a/out/Singleton.sol/Singleton.json b/out/Singleton.sol/Singleton.json new file mode 100644 index 0000000..d5881f6 --- /dev/null +++ b/out/Singleton.sol/Singleton.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Singleton - Base for singleton contracts (should always be the first super contract) This contract is tightly coupled to our proxy contract (see `proxies/SafeProxy.sol`)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/common/Singleton.sol\":\"Singleton\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/common/Singleton.sol":"Singleton"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"}},"version":1},"id":57} \ No newline at end of file diff --git a/out/StdAssertions.sol/StdAssertions.json b/out/StdAssertions.sol/StdAssertions.json new file mode 100644 index 0000000..dd39388 --- /dev/null +++ b/out/StdAssertions.sol/StdAssertions.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdAssertions.sol\":\"StdAssertions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdAssertions.sol":"StdAssertions"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file diff --git a/out/StdChains.sol/StdChains.json b/out/StdChains.sol/StdChains.json new file mode 100644 index 0000000..f3700f6 --- /dev/null +++ b/out/StdChains.sol/StdChains.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initialize` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initialize`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve `mainnet`'s RPC URL: - If you haven't set any mainnet chain info with `setChain`, you haven't specified that chain in `foundry.toml` and no env var is set, the default data and RPC URL will be returned. - If you have set a mainnet RPC URL in `foundry.toml` it will return that, if valid (e.g. if a URL is given or if an environment variable is given and that environment variable exists). Otherwise, the default data is returned. - If you specified data with `setChain` it will return that. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/out/StdCheats.sol/StdCheats.json b/out/StdCheats.sol/StdCheats.json new file mode 100644 index 0000000..2b91d4f --- /dev/null +++ b/out/StdCheats.sol/StdCheats.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/out/StdCheats.sol/StdCheatsSafe.json b/out/StdCheats.sol/StdCheatsSafe.json new file mode 100644 index 0000000..9d7ab41 --- /dev/null +++ b/out/StdCheats.sol/StdCheatsSafe.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/out/StdError.sol/stdError.json b/out/StdError.sol/stdError.json new file mode 100644 index 0000000..a0bfaf3 --- /dev/null +++ b/out/StdError.sol/stdError.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"arithmeticError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"assertionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"divisionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"encodeStorageError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"enumConversionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"indexOOBError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"memOverflowError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"popError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"zeroVarError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x6102c961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b8181101561025457858101830151858201604001528201610238565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fea26469706673582212209f44ec7236c0203e2665e341042645fcff9aff0dd543f4e6e40392b720a8158c64736f6c63430008130033","sourceMap":"162:850:32:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;162:850:32;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b8181101561025457858101830151858201604001528201610238565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fea26469706673582212209f44ec7236c0203e2665e341042645fcff9aff0dd543f4e6e40392b720a8158c64736f6c63430008130033","sourceMap":"162:850:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;185:86;;;:::i;461:91::-;;;:::i;277:87::-;;;:::i;831:88::-;;;:::i;654:80::-;;;:::i;925:84::-;;;:::i;558:90::-;;;:::i;370:85::-;;;:::i;740:::-;778:47;;820:4;778:47;;;785:36:124;758:18;;778:47:32;;;;;;;;;;;;;;;;;;;;;;;;;740:85;:::o;185:86::-;224:47;;266:4;224:47;;;785:36:124;758:18;;224:47:32;632:195:124;461:91:32;505:47;;547:4;505:47;;;785:36:124;758:18;;505:47:32;632:195:124;277:87:32;317:47;;359:4;317:47;;;785:36:124;758:18;;317:47:32;632:195:124;831:88:32;872:47;;914:4;872:47;;;785:36:124;758:18;;872:47:32;632:195:124;654:80:32;687:47;;729:4;687:47;;;785:36:124;758:18;;687:47:32;632:195:124;925:84:32;962:47;;1004:4;962:47;;;785:36:124;758:18;;962:47:32;632:195:124;558:90:32;601:47;;643:4;601:47;;;785:36:124;758:18;;601:47:32;632:195:124;370:85:32;408:47;;450:4;408:47;;;785:36:124;758:18;;408:47:32;632:195:124;14:613;132:4;161:2;190;179:9;172:21;222:6;216:13;265:6;260:2;249:9;245:18;238:34;290:1;300:140;314:6;311:1;308:13;300:140;;;409:14;;;405:23;;399:30;375:17;;;394:2;371:26;364:66;329:10;;300:140;;;304:3;489:1;484:2;475:6;464:9;460:22;456:31;449:42;618:2;548:66;543:2;535:6;531:15;527:88;516:9;512:104;508:113;500:121;;;;14:613;;;;:::o","linkReferences":{}},"methodIdentifiers":{"arithmeticError()":"8995290f","assertionError()":"10332977","divisionError()":"fa784a44","encodeStorageError()":"d160e4de","enumConversionError()":"1de45560","indexOOBError()":"05ee8612","memOverflowError()":"986c5f68","popError()":"b22dc54d","zeroVarError()":"b67689da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"arithmeticError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"divisionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"encodeStorageError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enumConversionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexOOBError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memOverflowError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"popError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeroVarError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdError.sol\":\"stdError\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"arithmeticError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"assertionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"divisionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"encodeStorageError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"enumConversionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexOOBError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"memOverflowError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"popError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zeroVarError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdError.sol":"stdError"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"}},"version":1},"id":32} \ No newline at end of file diff --git a/out/StdInvariant.sol/StdInvariant.json b/out/StdInvariant.sol/StdInvariant.json new file mode 100644 index 0000000..8505849 --- /dev/null +++ b/out/StdInvariant.sol/StdInvariant.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610913806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a2919061066c565b60405180910390f35b61009561016c565b6100956101d9565b6100c3610246565b6040516100a291906106c6565b6100d8610357565b6040516100a291906107bc565b6100c3610427565b6100d861052f565b6100956105ff565b6060600180548060200260200160405190810160405280929190818152602001828054801561016257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575b5050505050905090565b606060038054806020026020016040519081016040528092919081815260200182805480156101625760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575050505050905090565b606060028054806020026020016040519081016040528092919081815260200182805480156101625760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b8282101561034e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561033657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116102e35790505b5050505050815250508152602001906001019061026a565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561034e57838290600052602060002001805461039a9061088a565b80601f01602080910402602001604051908101604052809291908181526020018280546103c69061088a565b80156104135780601f106103e857610100808354040283529160200191610413565b820191906000526020600020905b8154815290600101906020018083116103f657829003601f168201915b50505050508152602001906001019061037b565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561034e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561051757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104c45790505b5050505050815250508152602001906001019061044b565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561034e5783829060005260206000200180546105729061088a565b80601f016020809104026020016040519081016040528092919081815260200182805461059e9061088a565b80156105eb5780601f106105c0576101008083540402835291602001916105eb565b820191906000526020600020905b8154815290600101906020018083116105ce57829003601f168201915b505050505081526020019060010190610553565b606060008054806020026020016040519081016040528092919081815260200182805480156101625760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b818110156106ba57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610688565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156107ad578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156107985783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190610756565b50978a019795505050918701916001016106ee565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561087c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089870301855282518051808852835b81811015610837578281018a01518982018b0152890161081c565b508781018901849052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169096018701955093860193918601916001016107e4565b509398975050505050505050565b600181811c9082168061089e57607f821691505b6020821081036108d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220e9e6577dfb9d54eb63263a24bad6a810f3c94ec364af00026a66f9469c96a10164736f6c63430008130033","sourceMap":"100:2965:33:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a2919061066c565b60405180910390f35b61009561016c565b6100956101d9565b6100c3610246565b6040516100a291906106c6565b6100d8610357565b6040516100a291906107bc565b6100c3610427565b6100d861052f565b6100956105ff565b6060600180548060200260200160405190810160405280929190818152602001828054801561016257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575b5050505050905090565b606060038054806020026020016040519081016040528092919081815260200182805480156101625760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575050505050905090565b606060028054806020026020016040519081016040528092919081815260200182805480156101625760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b8282101561034e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561033657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116102e35790505b5050505050815250508152602001906001019061026a565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561034e57838290600052602060002001805461039a9061088a565b80601f01602080910402602001604051908101604052809291908181526020018280546103c69061088a565b80156104135780601f106103e857610100808354040283529160200191610413565b820191906000526020600020905b8154815290600101906020018083116103f657829003601f168201915b50505050508152602001906001019061037b565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561034e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561051757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104c45790505b5050505050815250508152602001906001019061044b565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561034e5783829060005260206000200180546105729061088a565b80601f016020809104026020016040519081016040528092919081815260200182805461059e9061088a565b80156105eb5780601f106105c0576101008083540402835291602001916105eb565b820191906000526020600020905b8154815290600101906020018083116105ce57829003601f168201915b505050505081526020019060010190610553565b606060008054806020026020016040519081016040528092919081815260200182805480156101625760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b818110156106ba57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610688565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156107ad578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156107985783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190610756565b50978a019795505050918701916001016106ee565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561087c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089870301855282518051808852835b81811015610837578281018a01518982018b0152890161081c565b508781018901849052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169096018701955093860193918601916001016107e4565b509398975050505050505050565b600181811c9082168061089e57607f821691505b6020821081036108d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220e9e6577dfb9d54eb63263a24bad6a810f3c94ec364af00026a66f9469c96a10164736f6c63430008130033","sourceMap":"100:2965:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:134;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;2013:142::-;;;:::i;2161:134::-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2013:142;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;14:681:124:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;545:42;526:62;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:124;;14:681;-1:-1:-1;;;;;;14:681:124:o;700:1697::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1065;1319:6;1314:3;1311:15;1303:1065;;;1388:22;;;1412:66;1384:95;1372:108;;1503:13;;1590:9;;1601:42;1586:58;1571:74;;1684:11;;1678:18;1716:15;;;1709:27;;;1797:19;;1543:15;;;1829:24;;;1919:21;;;;1964:1;;1887:2;1875:15;;;1978:282;1994:8;1989:3;1986:17;1978:282;;;2075:15;;2092:66;2071:88;2057:103;;2229:17;;;;2022:1;2013:11;;;;;2186:14;;;;1978:282;;;-1:-1:-1;2346:12:124;;;;2283:5;-1:-1:-1;;;2311:15:124;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:124;;700:1697;-1:-1:-1;;;;;;;;;700:1697:124:o;2402:1321::-;2564:4;2593:2;2633;2622:9;2618:18;2663:2;2652:9;2645:21;2686:6;2721;2715:13;2752:6;2744;2737:22;2790:2;2779:9;2775:18;2768:25;;2852:2;2842:6;2839:1;2835:14;2824:9;2820:30;2816:39;2802:53;;2890:2;2882:6;2878:15;2911:1;2932;2942:752;2958:6;2953:3;2950:15;2942:752;;;3051:66;3039:9;3031:6;3027:22;3023:95;3018:3;3011:108;3148:6;3142:13;3190:2;3184:9;3221:8;3213:6;3206:24;3254:1;3268:157;3284:8;3279:3;3276:17;3268:157;;;3392:12;;;3388:21;;3382:28;3359:16;;;3355:25;;3348:63;3303:12;;3268:157;;;-1:-1:-1;3449:21:124;;;3445:30;;3438:41;;;3536:2;3522:17;3541:66;3518:90;3506:103;;;3502:112;;;-1:-1:-1;3672:12:124;;;;3637:15;;;;2984:1;2975:11;2942:752;;;-1:-1:-1;3711:6:124;;2402:1321;-1:-1:-1;;;;;;;;2402:1321:124:o;3728:437::-;3807:1;3803:12;;;;3850;;;3871:61;;3925:4;3917:6;3913:17;3903:27;;3871:61;3978:2;3970:6;3967:14;3947:18;3944:38;3941:218;;4015:77;4012:1;4005:88;4116:4;4113:1;4106:15;4144:4;4141:1;4134:15;3941:218;;3728:437;;;:::o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdInvariant.sol\":\"StdInvariant\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdInvariant.sol":"StdInvariant"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"}},"version":1},"id":33} \ No newline at end of file diff --git a/out/StdJson.sol/stdJson.json b/out/StdJson.sol/stdJson.json new file mode 100644 index 0000000..bcb4efb --- /dev/null +++ b/out/StdJson.sol/stdJson.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abb0d215df15ca37a6143545a9f6206480853785b83df02b18732b433fbd767264736f6c63430008130033","sourceMap":"830:5374:34:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;830:5374:34;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abb0d215df15ca37a6143545a9f6206480853785b83df02b18732b433fbd767264736f6c63430008130033","sourceMap":"830:5374:34:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":34} \ No newline at end of file diff --git a/out/StdMath.sol/stdMath.json b/out/StdMath.sol/stdMath.json new file mode 100644 index 0000000..b660ca8 --- /dev/null +++ b/out/StdMath.sol/stdMath.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220522554a39e45723cd00cb482fd788a5032e1d66fe2f430aa6bca642344dfb80364736f6c63430008130033","sourceMap":"65:1294:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:1294:35;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220522554a39e45723cd00cb482fd788a5032e1d66fe2f430aa6bca642344dfb80364736f6c63430008130033","sourceMap":"65:1294:35:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file diff --git a/out/StdStorage.sol/stdStorage.json b/out/StdStorage.sol/stdStorage.json new file mode 100644 index 0000000..33a3847 --- /dev/null +++ b/out/StdStorage.sol/stdStorage.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220194f35140a897f837f0edb6199e779b359e328511874ec595d81d696d05f955f64736f6c63430008130033","sourceMap":"7339:4527:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;7339:4527:36;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220194f35140a897f837f0edb6199e779b359e328511874ec595d81d696d05f955f64736f6c63430008130033","sourceMap":"7339:4527:36:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":36} \ No newline at end of file diff --git a/out/StdStorage.sol/stdStorageSafe.json b/out/StdStorage.sol/stdStorageSafe.json new file mode 100644 index 0000000..5d5391d --- /dev/null +++ b/out/StdStorage.sol/stdStorageSafe.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eabb019a2cd3b419e969fe9a07857f3acc2ff0f35e2aa7a046e17ec756456eb564736f6c63430008130033","sourceMap":"368:6969:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;368:6969:36;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eabb019a2cd3b419e969fe9a07857f3acc2ff0f35e2aa7a046e17ec756456eb564736f6c63430008130033","sourceMap":"368:6969:36:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":36} \ No newline at end of file diff --git a/out/StdStyle.sol/StdStyle.json b/out/StdStyle.sol/StdStyle.json new file mode 100644 index 0000000..1b5d0a8 --- /dev/null +++ b/out/StdStyle.sol/StdStyle.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a73a21a487667e289a97b24c1faaf358ea5a50e4e7dba8601dc49ce6f7b9fac764736f6c63430008130033","sourceMap":"96:10353:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;96:10353:37;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a73a21a487667e289a97b24c1faaf358ea5a50e4e7dba8601dc49ce6f7b9fac764736f6c63430008130033","sourceMap":"96:10353:37:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":37} \ No newline at end of file diff --git a/out/StdUtils.sol/StdUtils.json b/out/StdUtils.sol/StdUtils.json new file mode 100644 index 0000000..cbc41b7 --- /dev/null +++ b/out/StdUtils.sol/StdUtils.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/out/StorageAccessible.sol/StorageAccessible.json b/out/StorageAccessible.sol/StorageAccessible.json new file mode 100644 index 0000000..8e5ca29 --- /dev/null +++ b/out/StorageAccessible.sol/StorageAccessible.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getStorageAt","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"simulateAndRevert","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getStorageAt(uint256,uint256)":"5624b25b","simulateAndRevert(address,bytes)":"b4faba09"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Gnosis Developers\",\"kind\":\"dev\",\"methods\":{\"getStorageAt(uint256,uint256)\":{\"params\":{\"length\":\"- the number of words (32 bytes) of data to read\",\"offset\":\"- the offset in the current contract's storage in words to start reading from\"},\"returns\":{\"_0\":\"the bytes that were read.\"}},\"simulateAndRevert(address,bytes)\":{\"details\":\"Performs a delegatecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). This method reverts with data equal to `abi.encode(bool(success), bytes(response))`. Specifically, the `returndata` after a call to this method will be: `success:bool || response.length:uint256 || response:bytes`.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}}},\"title\":\"StorageAccessible - A generic base contract that allows callers to access all internal storage.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getStorageAt(uint256,uint256)\":{\"notice\":\"Reads `length` bytes of storage in the currents contract\"}},\"notice\":\"See https://github.com/gnosis/util-contracts/blob/bb5fe5fb5df6d8400998094fb1b32a178a47c3a1/contracts/StorageAccessible.sol It removes a method from the original contract not needed for the Safe contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/common/StorageAccessible.sol\":\"StorageAccessible\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStorageAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateAndRevert"}],"devdoc":{"kind":"dev","methods":{"getStorageAt(uint256,uint256)":{"params":{"length":"- the number of words (32 bytes) of data to read","offset":"- the offset in the current contract's storage in words to start reading from"},"returns":{"_0":"the bytes that were read."}},"simulateAndRevert(address,bytes)":{"details":"Performs a delegatecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). This method reverts with data equal to `abi.encode(bool(success), bytes(response))`. Specifically, the `returndata` after a call to this method will be: `success:bool || response.length:uint256 || response:bytes`.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}}},"version":1},"userdoc":{"kind":"user","methods":{"getStorageAt(uint256,uint256)":{"notice":"Reads `length` bytes of storage in the currents contract"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/common/StorageAccessible.sol":"StorageAccessible"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"}},"version":1},"id":58} \ No newline at end of file diff --git a/out/StorageAccessible.sol/ViewStorageAccessible.json b/out/StorageAccessible.sol/ViewStorageAccessible.json new file mode 100644 index 0000000..dbe44e2 --- /dev/null +++ b/out/StorageAccessible.sol/ViewStorageAccessible.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getStorageAt","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"simulateDelegatecall","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getStorageAt(uint256,uint256)":"5624b25b","simulateDelegatecall(address,bytes)":"f84436bd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getStorageAt(uint256,uint256)\":{\"details\":\"Same as `getStorageAt` on StorageAccessible. This method allows reading aribtrary ranges of storage.\"},\"simulateDelegatecall(address,bytes)\":{\"details\":\"Same as `simulateDelegatecall` on StorageAccessible. Marked as view so that it can be called from external contracts that want to run simulations from within view functions. Will revert if the invoked simulation attempts to change state.\"}},\"title\":\"ViewStorageAccessible - Interface on top of StorageAccessible base class to allow simulations from view functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":\"ViewStorageAccessible\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStorageAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"view","type":"function","name":"simulateDelegatecall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"getStorageAt(uint256,uint256)":{"details":"Same as `getStorageAt` on StorageAccessible. This method allows reading aribtrary ranges of storage."},"simulateDelegatecall(address,bytes)":{"details":"Same as `simulateDelegatecall` on StorageAccessible. Marked as view so that it can be called from external contracts that want to run simulations from within view functions. Will revert if the invoked simulation attempts to change state."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":"ViewStorageAccessible"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/TestAccountLib.t.sol/TestAccountLib.json b/out/TestAccountLib.t.sol/TestAccountLib.json new file mode 100644 index 0000000..f23b341 --- /dev/null +++ b/out/TestAccountLib.t.sol/TestAccountLib.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208274c29fd6eee117ec8e73f7609ae3a0e0b2ddba4456fe36cf33ad464f628af464736f6c63430008130033","sourceMap":"157:1637:122:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;157:1637:122;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208274c29fd6eee117ec8e73f7609ae3a0e0b2ddba4456fe36cf33ad464f628af464736f6c63430008130033","sourceMap":"157:1637:122:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TestAccountLib.t.sol\":\"TestAccountLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TestAccountLib.t.sol":"TestAccountLib"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"}},"version":1},"id":122} \ No newline at end of file diff --git a/out/TokenCallbackHandler.sol/TokenCallbackHandler.json b/out/TokenCallbackHandler.sol/TokenCallbackHandler.json new file mode 100644 index 0000000..5eaf76e --- /dev/null +++ b/out/TokenCallbackHandler.sol/TokenCallbackHandler.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokensReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506105d1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100665760003560e01c8063150b7a0211610050578063150b7a02146100ad578063bc197c8114610116578063f23a6e611461015157600080fd5b806223de291461006b57806301ffc9a714610085575b600080fd5b6100836100793660046102e1565b5050505050505050565b005b61009861009336600461038c565b61018a565b60405190151581526020015b60405180910390f35b6100e56100bb3660046103d5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a4565b6100e5610124366004610489565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6100e561015f366004610523565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061021d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061026957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461029357600080fd5b919050565b60008083601f8401126102aa57600080fd5b50813567ffffffffffffffff8111156102c257600080fd5b6020830191508360208285010111156102da57600080fd5b9250929050565b60008060008060008060008060c0898b0312156102fd57600080fd5b6103068961026f565b975061031460208a0161026f565b965061032260408a0161026f565b955060608901359450608089013567ffffffffffffffff8082111561034657600080fd5b6103528c838d01610298565b909650945060a08b013591508082111561036b57600080fd5b506103788b828c01610298565b999c989b5096995094979396929594505050565b60006020828403121561039e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146103ce57600080fd5b9392505050565b6000806000806000608086880312156103ed57600080fd5b6103f68661026f565b94506104046020870161026f565b935060408601359250606086013567ffffffffffffffff81111561042757600080fd5b61043388828901610298565b969995985093965092949392505050565b60008083601f84011261045657600080fd5b50813567ffffffffffffffff81111561046e57600080fd5b6020830191508360208260051b85010111156102da57600080fd5b60008060008060008060008060a0898b0312156104a557600080fd5b6104ae8961026f565b97506104bc60208a0161026f565b9650604089013567ffffffffffffffff808211156104d957600080fd5b6104e58c838d01610444565b909850965060608b01359150808211156104fe57600080fd5b61050a8c838d01610444565b909650945060808b013591508082111561036b57600080fd5b60008060008060008060a0878903121561053c57600080fd5b6105458761026f565b95506105536020880161026f565b94506040870135935060608701359250608087013567ffffffffffffffff81111561057d57600080fd5b61058989828a01610298565b979a969950949750929593949250505056fea2646970667358221220c71e925d54513f612a5ca96f1627b4b9a4a35565c454ce1312d5567ff3b06d2c64736f6c63430008130033","sourceMap":"421:1864:63:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100665760003560e01c8063150b7a0211610050578063150b7a02146100ad578063bc197c8114610116578063f23a6e611461015157600080fd5b806223de291461006b57806301ffc9a714610085575b600080fd5b6100836100793660046102e1565b5050505050505050565b005b61009861009336600461038c565b61018a565b60405190151581526020015b60405180910390f35b6100e56100bb3660046103d5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a4565b6100e5610124366004610489565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6100e561015f366004610523565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061021d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061026957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461029357600080fd5b919050565b60008083601f8401126102aa57600080fd5b50813567ffffffffffffffff8111156102c257600080fd5b6020830191508360208285010111156102da57600080fd5b9250929050565b60008060008060008060008060c0898b0312156102fd57600080fd5b6103068961026f565b975061031460208a0161026f565b965061032260408a0161026f565b955060608901359450608089013567ffffffffffffffff8082111561034657600080fd5b6103528c838d01610298565b909650945060a08b013591508082111561036b57600080fd5b506103788b828c01610298565b999c989b5096995094979396929594505050565b60006020828403121561039e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146103ce57600080fd5b9392505050565b6000806000806000608086880312156103ed57600080fd5b6103f68661026f565b94506104046020870161026f565b935060408601359250606086013567ffffffffffffffff81111561042757600080fd5b61043388828901610298565b969995985093965092949392505050565b60008083601f84011261045657600080fd5b50813567ffffffffffffffff81111561046e57600080fd5b6020830191508360208260051b85010111156102da57600080fd5b60008060008060008060008060a0898b0312156104a557600080fd5b6104ae8961026f565b97506104bc60208a0161026f565b9650604089013567ffffffffffffffff808211156104d957600080fd5b6104e58c838d01610444565b909850965060608b01359150808211156104fe57600080fd5b61050a8c838d01610444565b909650945060808b013591508082111561036b57600080fd5b60008060008060008060a0878903121561053c57600080fd5b6105458761026f565b95506105536020880161026f565b94506040870135935060608701359250608087013567ffffffffffffffff81111561057d57600080fd5b61058989828a01610298565b979a969950949750929593949250505056fea2646970667358221220c71e925d54513f612a5ca96f1627b4b9a4a35565c454ce1312d5567ff3b06d2c64736f6c63430008130033","sourceMap":"421:1864:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:199;;;;;;:::i;:::-;;;;;;;;;;;;1977:306;;;;;;:::i;:::-;;:::i;:::-;;;2084:14:124;;2077:22;2059:41;;2047:2;2032:18;1977:306:63;;;;;;;;1301:143;;;;;;:::i;:::-;1420:17;1301:143;;;;;;;;;;;2916:66:124;2904:79;;;2886:98;;2874:2;2859:18;1301:143:63;2742:248:124;948:226:63;;;;;;:::i;:::-;1150:17;948:226;;;;;;;;;;;656:153;;;;;;:::i;:::-;785:17;656:153;;;;;;;;;1977:306;2064:4;2099:53;;;2114:38;2099:53;;:121;;-1:-1:-1;2168:52:63;;;2183:37;2168:52;2099:121;:177;;;-1:-1:-1;2236:40:63;;;2251:25;2236:40;2099:177;2080:196;1977:306;-1:-1:-1;;1977:306:63:o;14:196:124:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:124;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:1010::-;693:6;701;709;717;725;733;741;749;802:3;790:9;781:7;777:23;773:33;770:53;;;819:1;816;809:12;770:53;842:29;861:9;842:29;:::i;:::-;832:39;;890:38;924:2;913:9;909:18;890:38;:::i;:::-;880:48;;947:38;981:2;970:9;966:18;947:38;:::i;:::-;937:48;;1032:2;1021:9;1017:18;1004:32;994:42;;1087:3;1076:9;1072:19;1059:33;1111:18;1152:2;1144:6;1141:14;1138:34;;;1168:1;1165;1158:12;1138:34;1207:58;1257:7;1248:6;1237:9;1233:22;1207:58;:::i;:::-;1284:8;;-1:-1:-1;1181:84:124;-1:-1:-1;1372:3:124;1357:19;;1344:33;;-1:-1:-1;1389:16:124;;;1386:36;;;1418:1;1415;1408:12;1386:36;;1457:60;1509:7;1498:8;1487:9;1483:24;1457:60;:::i;:::-;567:1010;;;;-1:-1:-1;567:1010:124;;-1:-1:-1;567:1010:124;;;;;;1536:8;-1:-1:-1;;;567:1010:124:o;1582:332::-;1640:6;1693:2;1681:9;1672:7;1668:23;1664:32;1661:52;;;1709:1;1706;1699:12;1661:52;1748:9;1735:23;1798:66;1791:5;1787:78;1780:5;1777:89;1767:117;;1880:1;1877;1870:12;1767:117;1903:5;1582:332;-1:-1:-1;;;1582:332:124:o;2111:626::-;2208:6;2216;2224;2232;2240;2293:3;2281:9;2272:7;2268:23;2264:33;2261:53;;;2310:1;2307;2300:12;2261:53;2333:29;2352:9;2333:29;:::i;:::-;2323:39;;2381:38;2415:2;2404:9;2400:18;2381:38;:::i;:::-;2371:48;;2466:2;2455:9;2451:18;2438:32;2428:42;;2521:2;2510:9;2506:18;2493:32;2548:18;2540:6;2537:30;2534:50;;;2580:1;2577;2570:12;2534:50;2619:58;2669:7;2660:6;2649:9;2645:22;2619:58;:::i;:::-;2111:626;;;;-1:-1:-1;2111:626:124;;-1:-1:-1;2696:8:124;;2593:84;2111:626;-1:-1:-1;;;2111:626:124:o;2995:367::-;3058:8;3068:6;3122:3;3115:4;3107:6;3103:17;3099:27;3089:55;;3140:1;3137;3130:12;3089:55;-1:-1:-1;3163:20:124;;3206:18;3195:30;;3192:50;;;3238:1;3235;3228:12;3192:50;3275:4;3267:6;3263:17;3251:29;;3335:3;3328:4;3318:6;3315:1;3311:14;3303:6;3299:27;3295:38;3292:47;3289:67;;;3352:1;3349;3342:12;3367:1210;3527:6;3535;3543;3551;3559;3567;3575;3583;3636:3;3624:9;3615:7;3611:23;3607:33;3604:53;;;3653:1;3650;3643:12;3604:53;3676:29;3695:9;3676:29;:::i;:::-;3666:39;;3724:38;3758:2;3747:9;3743:18;3724:38;:::i;:::-;3714:48;;3813:2;3802:9;3798:18;3785:32;3836:18;3877:2;3869:6;3866:14;3863:34;;;3893:1;3890;3883:12;3863:34;3932:70;3994:7;3985:6;3974:9;3970:22;3932:70;:::i;:::-;4021:8;;-1:-1:-1;3906:96:124;-1:-1:-1;4109:2:124;4094:18;;4081:32;;-1:-1:-1;4125:16:124;;;4122:36;;;4154:1;4151;4144:12;4122:36;4193:72;4257:7;4246:8;4235:9;4231:24;4193:72;:::i;:::-;4284:8;;-1:-1:-1;4167:98:124;-1:-1:-1;4372:3:124;4357:19;;4344:33;;-1:-1:-1;4389:16:124;;;4386:36;;;4418:1;4415;4408:12;4582:695;4688:6;4696;4704;4712;4720;4728;4781:3;4769:9;4760:7;4756:23;4752:33;4749:53;;;4798:1;4795;4788:12;4749:53;4821:29;4840:9;4821:29;:::i;:::-;4811:39;;4869:38;4903:2;4892:9;4888:18;4869:38;:::i;:::-;4859:48;;4954:2;4943:9;4939:18;4926:32;4916:42;;5005:2;4994:9;4990:18;4977:32;4967:42;;5060:3;5049:9;5045:19;5032:33;5088:18;5080:6;5077:30;5074:50;;;5120:1;5117;5110:12;5074:50;5159:58;5209:7;5200:6;5189:9;5185:22;5159:58;:::i;:::-;4582:695;;;;-1:-1:-1;4582:695:124;;-1:-1:-1;4582:695:124;;5236:8;;4582:695;-1:-1:-1;;;4582:695:124:o","linkReferences":{}},"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","supportsInterface(bytes4)":"01ffc9a7","tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Richard Meissner - @rmeissner\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"Id of the interface.\"},\"returns\":{\"_0\":\"if the interface is supported.\"}}},\"title\":\"Default Callback Handler - Handles supported tokens' callbacks, allowing Safes receiving these tokens.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Handles ERC1155 Token batch callback. return Standardized onERC1155BatchReceived return value.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Handles ERC1155 Token callback. return Standardized onERC1155Received return value.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handles ERC721 Token callback. return Standardized onERC721Received return value.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Implements ERC165 interface support for ERC1155TokenReceiver, ERC721TokenReceiver and IERC165.\"},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"notice\":\"Handles ERC777 Token callback. return nothing (not standardized)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":\"TokenCallbackHandler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"tokensReceived"}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"params":{"interfaceId":"Id of the interface."},"returns":{"_0":"if the interface is supported."}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"notice":"Handles ERC1155 Token batch callback. return Standardized onERC1155BatchReceived return value."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"notice":"Handles ERC1155 Token callback. return Standardized onERC1155Received return value."},"onERC721Received(address,address,uint256,bytes)":{"notice":"Handles ERC721 Token callback. return Standardized onERC721Received return value."},"supportsInterface(bytes4)":{"notice":"Implements ERC165 interface support for ERC1155TokenReceiver, ERC721TokenReceiver and IERC165."},"tokensReceived(address,address,address,uint256,bytes,bytes)":{"notice":"Handles ERC777 Token callback. return nothing (not standardized)"}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/TokenCallbackHandler.sol":"TokenCallbackHandler"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"}},"version":1},"id":63} \ No newline at end of file diff --git a/out/TokenCallbacks.sol/TokenCallbacks.json b/out/TokenCallbacks.sol/TokenCallbacks.json new file mode 100644 index 0000000..0ec36e4 --- /dev/null +++ b/out/TokenCallbacks.sol/TokenCallbacks.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"safeMethods","inputs":[{"name":"","type":"address","internalType":"contract Safe"},{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"AddedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"method","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ChangedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"oldMethod","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newMethod","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemovedSafeMethod","inputs":[{"name":"safe","type":"address","indexed":true,"internalType":"contract Safe"},{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","safeMethods(address,bytes4)":"0a3fe054"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"method\",\"type\":\"bytes32\"}],\"name\":\"AddedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldMethod\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newMethod\",\"type\":\"bytes32\"}],\"name\":\"ChangedSafeMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract Safe\",\"name\":\"safe\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"RemovedSafeMethod\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"safeMethods\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{},\"title\":\"TokenCallbacks - ERC1155 and ERC721 token callbacks for Safes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Handles ERC1155 Token batch callback. return Standardized onERC1155BatchReceived return value.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Handles ERC1155 Token callback. return Standardized onERC1155Received return value.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handles ERC721 Token callback. return Standardized onERC721Received return value.\"}},\"notice\":\"Refactored from https://github.com/safe-global/safe-contracts/blob/3c3fc80f7f9aef1d39aaae2b53db5f4490051b0d/contracts/handler/TokenCallbackHandler.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":\"TokenCallbacks\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"method","type":"bytes32","indexed":false}],"type":"event","name":"AddedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"oldMethod","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newMethod","type":"bytes32","indexed":false}],"type":"event","name":"ChangedSafeMethod","anonymous":false},{"inputs":[{"internalType":"contract Safe","name":"safe","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false}],"type":"event","name":"RemovedSafeMethod","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"contract Safe","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function","name":"safeMethods","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"notice":"Handles ERC1155 Token batch callback. return Standardized onERC1155BatchReceived return value."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"notice":"Handles ERC1155 Token callback. return Standardized onERC1155Received return value."},"onERC721Received(address,address,uint256,bytes)":{"notice":"Handles ERC721 Token callback. return Standardized onERC721Received return value."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":"TokenCallbacks"},"evmVersion":"paris","libraries":{}},"sources":{"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"}},"version":1},"id":69} \ No newline at end of file diff --git a/out/Tokens.t.sol/MockERC20.json b/out/Tokens.t.sol/MockERC20.json new file mode 100644 index 0000000..62224f7 --- /dev/null +++ b/out/Tokens.t.sol/MockERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162000e1338038062000e13833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"286:322:119:-:0;;;530:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;590:4;596:6;2046:5:1;:13;590:4:119;2046:5:1;:13;:::i;:::-;-1:-1:-1;2069:7:1;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;530:76:119;;286:322;;14:127:124;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:124;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:124;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:124:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:124;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:124;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:124;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:124;;;3992:26;3943:89;-1:-1:-1;;2747:1:124;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:124;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:124;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:124;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:124:o;:::-;286:322:119;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220d90d85ccdbce7d4c11d7b962a5974971fd30511f65013138513cc19841d1e8f764736f6c63430008130033","sourceMap":"286:322:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:124;;1244:22;1226:41;;1214:2;1199:18;4444:197:1;1086:187:124;3255:106:1;3342:12;;3255:106;;;1424:25:124;;;1412:2;1397:18;3255:106:1;1278:177:124;5203:256:1;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1935:36:124;;1923:2;1908:18;3104:91:1;1793:184:124;5854:234:1;;;;;;:::i;:::-;;:::i;3419:125::-;;;;;;:::i;:::-;3519:18;;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;4102:18;;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149;2158:98;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:4;4581:32:1;719:10:4;4597:7:1;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:4;5356:38:1;5372:4;719:10:4;5387:6:1;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:1;;5203:256;-1:-1:-1;;;;5203:256:1:o;5854:234::-;719:10:4;5942:4:1;4102:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5942:4;;719:10:4;5996:64:1;;719:10:4;;4102:27:1;;6021:38;;6049:10;;6021:38;:::i;:::-;5996:8;:64::i;2369:102::-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;719:10:4;6668:4:1;4102:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6668:4;;719:10:4;6812:15:1;6792:16;:35;;6784:85;;;;;;;3366:2:124;6784:85:1;;;3348:21:124;3405:2;3385:18;;;3378:30;3444:34;3424:18;;;3417:62;3515:7;3495:18;;;3488:35;3540:19;;6784:85:1;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:4;3873:28:1;719:10:4;3890:2:1;3894:6;3873:9;:28::i;10457:340::-;10558:19;;;10550:68;;;;;;;3772:2:124;10550:68:1;;;3754:21:124;3811:2;3791:18;;;3784:30;3850:34;3830:18;;;3823:62;3921:6;3901:18;;;3894:34;3945:19;;10550:68:1;3570:400:124;10550:68:1;10636:21;;;10628:68;;;;;;;4177:2:124;10628:68:1;;;4159:21:124;4216:2;4196:18;;;4189:30;4255:34;4235:18;;;4228:62;4326:4;4306:18;;;4299:32;4348:19;;10628:68:1;3975:398:124;10628:68:1;10707:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1424:25:124;;;10758:32:1;;1397:18:124;10758:32:1;;;;;;;10457:340;;;:::o;11078:411::-;4102:18;;;;11178:24;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;11264:17;11244:37;;11240:243;;11325:6;11305:16;:26;;11297:68;;;;;;;4580:2:124;11297:68:1;;;4562:21:124;4619:2;4599:18;;;4592:30;4658:31;4638:18;;;4631:59;4707:18;;11297:68:1;4378:353:124;11297:68:1;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;7552:18;;;7544:68;;;;;;;4938:2:124;7544:68:1;;;4920:21:124;4977:2;4957:18;;;4950:30;5016:34;4996:18;;;4989:62;5087:7;5067:18;;;5060:35;5112:19;;7544:68:1;4736:401:124;7544:68:1;7630:16;;;7622:64;;;;;;;5344:2:124;7622:64:1;;;5326:21:124;5383:2;5363:18;;;5356:30;5422:34;5402:18;;;5395:62;5493:5;5473:18;;;5466:33;5516:19;;7622:64:1;5142:399:124;7622:64:1;7768:15;;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;;;;5748:2:124;7793:72:1;;;5730:21:124;5787:2;5767:18;;;5760:30;5826:34;5806:18;;;5799:62;5897:8;5877:18;;;5870:36;5923:19;;7793:72:1;5546:402:124;7793:72:1;7899:15;;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1424:25:124;;;8114:13:1;;8163:26;;1397:18:124;8163:26:1;;;;;;;8200:37;12073:91;14:607:124;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;754:42;743:54;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:124:o;1460:328::-;1537:6;1545;1553;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1645:29;1664:9;1645:29;:::i;:::-;1635:39;;1693:38;1727:2;1716:9;1712:18;1693:38;:::i;:::-;1683:48;;1778:2;1767:9;1763:18;1750:32;1740:42;;1460:328;;;;;:::o;1982:186::-;2041:6;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;1982:186;-1:-1:-1;;;1982:186:124:o;2173:260::-;2241:6;2249;2302:2;2290:9;2281:7;2277:23;2273:32;2270:52;;;2318:1;2315;2308:12;2270:52;2341:29;2360:9;2341:29;:::i;:::-;2331:39;;2389:38;2423:2;2412:9;2408:18;2389:38;:::i;:::-;2379:48;;2173:260;;;;;:::o;2438:437::-;2517:1;2513:12;;;;2560;;;2581:61;;2635:4;2627:6;2623:17;2613:27;;2581:61;2688:2;2680:6;2677:14;2657:18;2654:38;2651:218;;2725:77;2722:1;2715:88;2826:4;2823:1;2816:15;2854:4;2851:1;2844:15;2651:218;;2438:437;;;:::o;2880:279::-;2945:9;;;2966:10;;;2963:190;;;3009:77;3006:1;2999:88;3110:4;3107:1;3100:15;3138:4;3135:1;3128:15","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes a new mock ERC20 token. No tokens are minted, makes use instead of `vm.deal` in tests.\",\"params\":{\"name\":\"The name of the token.\",\"symbol\":\"The symbol of the token.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"title\":\"Mock ERC20 token for testing.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/Tokens.t.sol\":\"MockERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Initializes a new mock ERC20 token. No tokens are minted, makes use instead of `vm.deal` in tests.","params":{"name":"The name of the token.","symbol":"The symbol of the token."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/Tokens.t.sol":"MockERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"}},"version":1},"id":119} \ No newline at end of file diff --git a/out/Tokens.t.sol/Tokens.json b/out/Tokens.t.sol/Tokens.json new file mode 100644 index 0000000..422887a --- /dev/null +++ b/out/Tokens.t.sol/Tokens.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"token2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"token0()":"0dfe1681","token1()":"d21220a7","token2()":"25be124e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token2\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{},\"title\":\"Tokens - A helper contract for local integration testing.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/Tokens.t.sol\":\"Tokens\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"test/helpers/Tokens.t.sol\":{\"keccak256\":\"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0\",\"dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/Tokens.t.sol":"Tokens"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"test/helpers/Tokens.t.sol":{"keccak256":"0xf0af7c8cf7f6a63ad84ae8a115f33a578c02065132572beb61d090f7f90eee58","urls":["bzz-raw://b57bf248243ac8a8e76eddb786b8f4eb7a505992d737fc4a46730d462ab823c0","dweb:/ipfs/QmaXkGF1o711QoW9idmkWPqY687oK7HqNsjqhZ52Dg4ncQ"],"license":"GPL-3.0"}},"version":1},"id":119} \ No newline at end of file diff --git a/out/Vm.sol/Vm.json b/out/Vm.sol/Vm.json new file mode 100644 index 0000000..b082eb7 --- /dev/null +++ b/out/Vm.sol/Vm.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"fileOrDir","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assume(bool)":"4c63e562","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","deal(address,uint256)":"c88a5e6d","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","difficulty(uint256)":"46cc92d9","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","expectCall(address,bytes)":"bd6af434","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,uint64,bytes)":"23361207","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectRevert()":"f4844814","expectRevert(bytes)":"f28dceb3","expectRevert(bytes4)":"c31eb0e0","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isPersistent(address)":"d92d8efd","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","projectRoot()":"d930a0e6","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeFile(string)":"f1afe04d","resumeGasMetering()":"2bcd50e0","revertTo(uint256)":"44d7f0a4","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","sign(uint256,bytes32)":"e341eaa4","snapshot()":"9711715a","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","stopBroadcast()":"76eadd36","stopPrank()":"90c5013b","store(address,bytes32,bytes32)":"70ca10bb","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"fileOrDir\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"fileOrDir","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."}},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"Vm"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":40} \ No newline at end of file diff --git a/out/Vm.sol/VmSafe.json b/out/Vm.sol/VmSafe.json new file mode 100644 index 0000000..0b2c326 --- /dev/null +++ b/out/Vm.sol/VmSafe.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"fileOrDir","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assume(bool)":"4c63e562","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","closeFile(string)":"48c3241f","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","projectRoot()":"d930a0e6","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeFile(string)":"f1afe04d","resumeGasMetering()":"2bcd50e0","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","sign(uint256,bytes32)":"e341eaa4","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","stopBroadcast()":"76eadd36","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"fileOrDir\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"fileOrDir","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"}},"version":1},"id":40} \ No newline at end of file diff --git a/out/build-info/40d69ef3de78d85c.json b/out/build-info/40d69ef3de78d85c.json new file mode 100644 index 0000000..fc82f9a --- /dev/null +++ b/out/build-info/40d69ef3de78d85c.json @@ -0,0 +1 @@ +{"id":"40d69ef3de78d85c","source_id_to_path":{"0":"lib/@openzeppelin/contracts/interfaces/IERC20.sol","1":"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol","2":"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol","3":"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","4":"lib/@openzeppelin/contracts/utils/Context.sol","5":"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol","6":"lib/@openzeppelin/contracts/utils/math/SafeCast.sol","7":"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol","8":"lib/cowprotocol/src/contracts/GPv2Settlement.sol","9":"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol","10":"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol","11":"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol","12":"lib/cowprotocol/src/contracts/interfaces/IERC20.sol","13":"lib/cowprotocol/src/contracts/interfaces/IVault.sol","14":"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol","15":"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol","16":"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol","17":"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol","18":"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol","19":"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol","20":"lib/cowprotocol/src/contracts/libraries/SafeCast.sol","21":"lib/cowprotocol/src/contracts/libraries/SafeMath.sol","22":"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol","23":"lib/cowprotocol/src/contracts/mixins/Initializable.sol","24":"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol","25":"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol","26":"lib/forge-std/lib/ds-test/src/test.sol","27":"lib/forge-std/src/Base.sol","28":"lib/forge-std/src/StdAssertions.sol","29":"lib/forge-std/src/StdChains.sol","30":"lib/forge-std/src/StdCheats.sol","31":"lib/forge-std/src/StdError.sol","32":"lib/forge-std/src/StdInvariant.sol","33":"lib/forge-std/src/StdJson.sol","34":"lib/forge-std/src/StdMath.sol","35":"lib/forge-std/src/StdStorage.sol","36":"lib/forge-std/src/StdStyle.sol","37":"lib/forge-std/src/StdUtils.sol","38":"lib/forge-std/src/Test.sol","39":"lib/forge-std/src/Vm.sol","40":"lib/forge-std/src/console.sol","41":"lib/forge-std/src/console2.sol","42":"lib/forge-std/src/interfaces/IMulticall3.sol","43":"lib/murky/src/Merkle.sol","44":"lib/murky/src/common/MurkyBase.sol","45":"lib/safe/contracts/Safe.sol","46":"lib/safe/contracts/base/Executor.sol","47":"lib/safe/contracts/base/FallbackManager.sol","48":"lib/safe/contracts/base/GuardManager.sol","49":"lib/safe/contracts/base/ModuleManager.sol","50":"lib/safe/contracts/base/OwnerManager.sol","51":"lib/safe/contracts/common/Enum.sol","52":"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol","53":"lib/safe/contracts/common/SecuredTokenTransfer.sol","54":"lib/safe/contracts/common/SelfAuthorized.sol","55":"lib/safe/contracts/common/SignatureDecoder.sol","56":"lib/safe/contracts/common/Singleton.sol","57":"lib/safe/contracts/common/StorageAccessible.sol","58":"lib/safe/contracts/external/SafeMath.sol","59":"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol","60":"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol","61":"lib/safe/contracts/handler/HandlerContext.sol","62":"lib/safe/contracts/handler/TokenCallbackHandler.sol","63":"lib/safe/contracts/handler/extensible/ERC165Handler.sol","64":"lib/safe/contracts/handler/extensible/ExtensibleBase.sol","65":"lib/safe/contracts/handler/extensible/FallbackHandler.sol","66":"lib/safe/contracts/handler/extensible/MarshalLib.sol","67":"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol","68":"lib/safe/contracts/handler/extensible/TokenCallbacks.sol","69":"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol","70":"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol","71":"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol","72":"lib/safe/contracts/interfaces/IERC165.sol","73":"lib/safe/contracts/interfaces/ISignatureValidator.sol","74":"lib/safe/contracts/libraries/MultiSend.sol","75":"lib/safe/contracts/libraries/SafeStorage.sol","76":"lib/safe/contracts/libraries/SignMessageLib.sol","77":"lib/safe/contracts/proxies/IProxyCreationCallback.sol","78":"lib/safe/contracts/proxies/SafeProxy.sol","79":"lib/safe/contracts/proxies/SafeProxyFactory.sol","80":"src/BaseConditionalOrder.sol","81":"src/ComposableCoW.sol","82":"src/ERC1271Forwarder.sol","83":"src/guards/BaseSwapGuard.sol","84":"src/guards/ReceiverLock.sol","85":"src/interfaces/IConditionalOrder.sol","86":"src/interfaces/ISwapGuard.sol","87":"src/interfaces/IValueFactory.sol","88":"src/types/ConditionalOrdersUtilsLib.sol","89":"src/types/GoodAfterTime.sol","90":"src/types/twap/TWAP.sol","91":"src/types/twap/libraries/TWAPOrder.sol","92":"src/types/twap/libraries/TWAPOrderMathLib.sol","93":"src/vendored/CoWSettlement.sol","94":"src/vendored/Milkman.sol","95":"test/Base.t.sol","96":"test/ComposableCoW.base.t.sol","97":"test/ComposableCoW.t.sol","98":"test/helpers/CoWProtocol.t.sol","99":"test/helpers/Safe.t.sol","100":"test/helpers/Tokens.t.sol","101":"test/libraries/ComposableCoWLib.t.sol","102":"test/libraries/SafeLib.t.sol","103":"test/libraries/TestAccountLib.t.sol","104":"test/vendored/GPv2TradeEncoder.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/out/build-info/6d46d278da0af5dc.json b/out/build-info/6d46d278da0af5dc.json new file mode 100644 index 0000000..c84e0b4 --- /dev/null +++ b/out/build-info/6d46d278da0af5dc.json @@ -0,0 +1 @@ +{"id":"6d46d278da0af5dc","source_id_to_path":{"0":"lib/@openzeppelin/contracts/interfaces/IERC20.sol","1":"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol","2":"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol","3":"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","4":"lib/@openzeppelin/contracts/utils/Context.sol","5":"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol","6":"lib/@openzeppelin/contracts/utils/math/SafeCast.sol","7":"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol","8":"lib/cowprotocol/src/contracts/GPv2Settlement.sol","9":"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol","10":"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol","11":"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol","12":"lib/cowprotocol/src/contracts/interfaces/IERC20.sol","13":"lib/cowprotocol/src/contracts/interfaces/IVault.sol","14":"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol","15":"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol","16":"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol","17":"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol","18":"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol","19":"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol","20":"lib/cowprotocol/src/contracts/libraries/SafeCast.sol","21":"lib/cowprotocol/src/contracts/libraries/SafeMath.sol","22":"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol","23":"lib/cowprotocol/src/contracts/mixins/Initializable.sol","24":"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol","25":"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol","26":"lib/forge-std/lib/ds-test/src/test.sol","27":"lib/forge-std/src/Base.sol","28":"lib/forge-std/src/Script.sol","29":"lib/forge-std/src/StdAssertions.sol","30":"lib/forge-std/src/StdChains.sol","31":"lib/forge-std/src/StdCheats.sol","32":"lib/forge-std/src/StdError.sol","33":"lib/forge-std/src/StdInvariant.sol","34":"lib/forge-std/src/StdJson.sol","35":"lib/forge-std/src/StdMath.sol","36":"lib/forge-std/src/StdStorage.sol","37":"lib/forge-std/src/StdStyle.sol","38":"lib/forge-std/src/StdUtils.sol","39":"lib/forge-std/src/Test.sol","40":"lib/forge-std/src/Vm.sol","41":"lib/forge-std/src/console.sol","42":"lib/forge-std/src/console2.sol","43":"lib/forge-std/src/interfaces/IMulticall3.sol","44":"lib/murky/src/Merkle.sol","45":"lib/murky/src/common/MurkyBase.sol","46":"lib/safe/contracts/Safe.sol","47":"lib/safe/contracts/base/Executor.sol","48":"lib/safe/contracts/base/FallbackManager.sol","49":"lib/safe/contracts/base/GuardManager.sol","50":"lib/safe/contracts/base/ModuleManager.sol","51":"lib/safe/contracts/base/OwnerManager.sol","52":"lib/safe/contracts/common/Enum.sol","53":"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol","54":"lib/safe/contracts/common/SecuredTokenTransfer.sol","55":"lib/safe/contracts/common/SelfAuthorized.sol","56":"lib/safe/contracts/common/SignatureDecoder.sol","57":"lib/safe/contracts/common/Singleton.sol","58":"lib/safe/contracts/common/StorageAccessible.sol","59":"lib/safe/contracts/external/SafeMath.sol","60":"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol","61":"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol","62":"lib/safe/contracts/handler/HandlerContext.sol","63":"lib/safe/contracts/handler/TokenCallbackHandler.sol","64":"lib/safe/contracts/handler/extensible/ERC165Handler.sol","65":"lib/safe/contracts/handler/extensible/ExtensibleBase.sol","66":"lib/safe/contracts/handler/extensible/FallbackHandler.sol","67":"lib/safe/contracts/handler/extensible/MarshalLib.sol","68":"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol","69":"lib/safe/contracts/handler/extensible/TokenCallbacks.sol","70":"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol","71":"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol","72":"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol","73":"lib/safe/contracts/interfaces/IERC165.sol","74":"lib/safe/contracts/interfaces/ISignatureValidator.sol","75":"lib/safe/contracts/libraries/MultiSend.sol","76":"lib/safe/contracts/libraries/SafeStorage.sol","77":"lib/safe/contracts/libraries/SignMessageLib.sol","78":"lib/safe/contracts/proxies/IProxyCreationCallback.sol","79":"lib/safe/contracts/proxies/SafeProxy.sol","80":"lib/safe/contracts/proxies/SafeProxyFactory.sol","81":"script/deploy_AnvilStack.s.sol","82":"script/deploy_ComposableCoW.s.sol","83":"script/deploy_OrderTypes.s.sol","84":"script/deploy_ProdStack.s.sol","85":"script/submit_SingleOrder.s.sol","86":"src/BaseConditionalOrder.sol","87":"src/ComposableCoW.sol","88":"src/ERC1271Forwarder.sol","89":"src/guards/BaseSwapGuard.sol","90":"src/guards/ReceiverLock.sol","91":"src/interfaces/IAggregatorV3Interface.sol","92":"src/interfaces/IConditionalOrder.sol","93":"src/interfaces/ISwapGuard.sol","94":"src/interfaces/IValueFactory.sol","95":"src/types/ConditionalOrdersUtilsLib.sol","96":"src/types/GoodAfterTime.sol","97":"src/types/PerpetualStableSwap.sol","98":"src/types/StopLoss.sol","99":"src/types/TradeAboveThreshold.sol","100":"src/types/twap/TWAP.sol","101":"src/types/twap/libraries/TWAPOrder.sol","102":"src/types/twap/libraries/TWAPOrderMathLib.sol","103":"src/value_factories/CurrentBlockTimestampFactory.sol","104":"src/vendored/CoWSettlement.sol","105":"src/vendored/Milkman.sol","106":"test/Base.t.sol","107":"test/ComposableCoW.base.t.sol","108":"test/ComposableCoW.forwarder.t.sol","109":"test/ComposableCoW.gat.t.sol","110":"test/ComposableCoW.guards.t.sol","111":"test/ComposableCoW.stoploss.t.sol","112":"test/ComposableCoW.t.sol","113":"test/ComposableCoW.tat.t.sol","114":"test/ComposableCoW.twap.t.sol","115":"test/helpers/CoWProtocol.t.sol","116":"test/helpers/Safe.t.sol","117":"test/helpers/Tokens.t.sol","118":"test/libraries/ComposableCoWLib.t.sol","119":"test/libraries/SafeLib.t.sol","120":"test/libraries/TestAccountLib.t.sol","121":"test/vendored/GPv2TradeEncoder.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/out/build-info/a1f244ce6860c8a1.json b/out/build-info/a1f244ce6860c8a1.json new file mode 100644 index 0000000..78ce88b --- /dev/null +++ b/out/build-info/a1f244ce6860c8a1.json @@ -0,0 +1 @@ +{"id":"a1f244ce6860c8a1","source_id_to_path":{"0":"lib/@openzeppelin/contracts/interfaces/IERC20.sol","1":"lib/@openzeppelin/contracts/token/ERC20/ERC20.sol","2":"lib/@openzeppelin/contracts/token/ERC20/IERC20.sol","3":"lib/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","4":"lib/@openzeppelin/contracts/utils/Context.sol","5":"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol","6":"lib/@openzeppelin/contracts/utils/math/SafeCast.sol","7":"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol","8":"lib/cowprotocol/src/contracts/GPv2Settlement.sol","9":"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol","10":"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol","11":"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol","12":"lib/cowprotocol/src/contracts/interfaces/IERC20.sol","13":"lib/cowprotocol/src/contracts/interfaces/IVault.sol","14":"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol","15":"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol","16":"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol","17":"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol","18":"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol","19":"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol","20":"lib/cowprotocol/src/contracts/libraries/SafeCast.sol","21":"lib/cowprotocol/src/contracts/libraries/SafeMath.sol","22":"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol","23":"lib/cowprotocol/src/contracts/mixins/Initializable.sol","24":"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol","25":"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol","26":"lib/forge-std/lib/ds-test/src/test.sol","27":"lib/forge-std/src/Base.sol","28":"lib/forge-std/src/Script.sol","29":"lib/forge-std/src/StdAssertions.sol","30":"lib/forge-std/src/StdChains.sol","31":"lib/forge-std/src/StdCheats.sol","32":"lib/forge-std/src/StdError.sol","33":"lib/forge-std/src/StdInvariant.sol","34":"lib/forge-std/src/StdJson.sol","35":"lib/forge-std/src/StdMath.sol","36":"lib/forge-std/src/StdStorage.sol","37":"lib/forge-std/src/StdStyle.sol","38":"lib/forge-std/src/StdUtils.sol","39":"lib/forge-std/src/Test.sol","40":"lib/forge-std/src/Vm.sol","41":"lib/forge-std/src/console.sol","42":"lib/forge-std/src/console2.sol","43":"lib/forge-std/src/interfaces/IMulticall3.sol","44":"lib/murky/src/Merkle.sol","45":"lib/murky/src/common/MurkyBase.sol","46":"lib/safe/contracts/Safe.sol","47":"lib/safe/contracts/base/Executor.sol","48":"lib/safe/contracts/base/FallbackManager.sol","49":"lib/safe/contracts/base/GuardManager.sol","50":"lib/safe/contracts/base/ModuleManager.sol","51":"lib/safe/contracts/base/OwnerManager.sol","52":"lib/safe/contracts/common/Enum.sol","53":"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol","54":"lib/safe/contracts/common/SecuredTokenTransfer.sol","55":"lib/safe/contracts/common/SelfAuthorized.sol","56":"lib/safe/contracts/common/SignatureDecoder.sol","57":"lib/safe/contracts/common/Singleton.sol","58":"lib/safe/contracts/common/StorageAccessible.sol","59":"lib/safe/contracts/external/SafeMath.sol","60":"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol","61":"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol","62":"lib/safe/contracts/handler/HandlerContext.sol","63":"lib/safe/contracts/handler/TokenCallbackHandler.sol","64":"lib/safe/contracts/handler/extensible/ERC165Handler.sol","65":"lib/safe/contracts/handler/extensible/ExtensibleBase.sol","66":"lib/safe/contracts/handler/extensible/FallbackHandler.sol","67":"lib/safe/contracts/handler/extensible/MarshalLib.sol","68":"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol","69":"lib/safe/contracts/handler/extensible/TokenCallbacks.sol","70":"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol","71":"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol","72":"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol","73":"lib/safe/contracts/interfaces/IERC165.sol","74":"lib/safe/contracts/interfaces/ISignatureValidator.sol","75":"lib/safe/contracts/libraries/MultiSend.sol","76":"lib/safe/contracts/libraries/SafeStorage.sol","77":"lib/safe/contracts/libraries/SignMessageLib.sol","78":"lib/safe/contracts/proxies/IProxyCreationCallback.sol","79":"lib/safe/contracts/proxies/SafeProxy.sol","80":"lib/safe/contracts/proxies/SafeProxyFactory.sol","81":"script/deploy_AnvilStack.s.sol","82":"script/deploy_ComposableCoW.s.sol","83":"script/deploy_ExtensibleFallbackHandler.s.sol","84":"script/deploy_OrderTypes.s.sol","85":"script/deploy_ProdStack.s.sol","86":"script/deploy_ValueFactories.s.sol","87":"script/submit_SingleOrder.s.sol","88":"src/BaseConditionalOrder.sol","89":"src/ComposableCoW.sol","90":"src/ERC1271Forwarder.sol","91":"src/guards/BaseSwapGuard.sol","92":"src/guards/ReceiverLock.sol","93":"src/interfaces/IAggregatorV3Interface.sol","94":"src/interfaces/IConditionalOrder.sol","95":"src/interfaces/ISwapGuard.sol","96":"src/interfaces/IValueFactory.sol","97":"src/types/ConditionalOrdersUtilsLib.sol","98":"src/types/GoodAfterTime.sol","99":"src/types/PerpetualStableSwap.sol","100":"src/types/StopLoss.sol","101":"src/types/TradeAboveThreshold.sol","102":"src/types/twap/TWAP.sol","103":"src/types/twap/libraries/TWAPOrder.sol","104":"src/types/twap/libraries/TWAPOrderMathLib.sol","105":"src/value_factories/CurrentBlockTimestampFactory.sol","106":"src/vendored/CoWSettlement.sol","107":"src/vendored/Milkman.sol","108":"test/Base.t.sol","109":"test/ComposableCoW.base.t.sol","110":"test/ComposableCoW.forwarder.t.sol","111":"test/ComposableCoW.gat.t.sol","112":"test/ComposableCoW.guards.t.sol","113":"test/ComposableCoW.stoploss.t.sol","114":"test/ComposableCoW.t.sol","115":"test/ComposableCoW.tat.t.sol","116":"test/ComposableCoW.twap.t.sol","117":"test/helpers/CoWProtocol.t.sol","118":"test/helpers/Safe.t.sol","119":"test/helpers/Tokens.t.sol","120":"test/libraries/ComposableCoWLib.t.sol","121":"test/libraries/SafeLib.t.sol","122":"test/libraries/TestAccountLib.t.sol","123":"test/vendored/GPv2TradeEncoder.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/out/console.sol/console.json b/out/console.sol/console.json new file mode 100644 index 0000000..0dd503f --- /dev/null +++ b/out/console.sol/console.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ab7cd29dc7e47c491647952c4cad1184a78f2d055e0d602fbbcbafe8dc753a7764736f6c63430008130033","sourceMap":"66:66622:41:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:66622:41;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ab7cd29dc7e47c491647952c4cad1184a78f2d055e0d602fbbcbafe8dc753a7764736f6c63430008130033","sourceMap":"66:66622:41:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console.sol":"console"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"}},"version":1},"id":41} \ No newline at end of file diff --git a/out/console2.sol/console2.json b/out/console2.sol/console2.json new file mode 100644 index 0000000..7dcef5b --- /dev/null +++ b/out/console2.sol/console2.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c6585e71b1873e5ccae9efe6f2274c40ceb4f39bf1b01fd286b5218e4b58b42a64736f6c63430008130033","sourceMap":"525:68782:42:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;525:68782:42;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c6585e71b1873e5ccae9efe6f2274c40ceb4f39bf1b01fd286b5218e4b58b42a64736f6c63430008130033","sourceMap":"525:68782:42:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The original console.sol uses `int` and `uint` for computing function selectors, but it should use `int256` and `uint256`. This modified version fixes that. This version is recommended over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. Reference: https://github.com/NomicFoundation/hardhat/issues/2178\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console2.sol\":\"console2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console2.sol":"console2"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"}},"version":1},"id":42} \ No newline at end of file diff --git a/out/deploy_AnvilStack.s.sol/DeployAnvilStack.json b/out/deploy_AnvilStack.s.sol/DeployAnvilStack.json new file mode 100644 index 0000000..3e3bf56 --- /dev/null +++ b/out/deploy_AnvilStack.s.sol/DeployAnvilStack.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"eHandler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExtensibleFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SafeProxyFactory"}],"stateMutability":"view"},{"type":"function","name":"handler","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CompatibilityFallbackHandler"}],"stateMutability":"view"},{"type":"function","name":"multisend","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MultiSend"}],"stateMutability":"view"},{"type":"function","name":"relayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settlement","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract GPv2Settlement"}],"stateMutability":"view"},{"type":"function","name":"signMessageLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SignMessageLib"}],"stateMutability":"view"},{"type":"function","name":"singleton","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Safe"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVault"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b5062015a53806200003f6000396000f3fe60806040523480156200001157600080fd5b5060043610620000d95760003560e01c8063c0406226116200008b578063dfe274a91162000062578063dfe274a914620001fb578063f8ccbf47146200021c578063fbfa77cf146200023b57600080fd5b8063c040622614620001ad578063c45a015514620001b9578063c80916d414620001da57600080fd5b80638406c07911620000c05780638406c079146200014a5780639fbcc9ad146200016b578063b62654fb146200018c57600080fd5b8063294402cc14620000de578063511606301462000129575b600080fd5b601354620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600d54620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b600e54620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b601254620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b600f54620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b620001b762000261565b005b601054620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b601154620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b601454620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b600c546200022a9060ff1681565b604051901515815260200162000120565b600c54620000ff90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062001208565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b1580156200038b57600080fd5b505af1158015620003a0573d6000803e3d6000fd5b50506040517fffa18649000000000000000000000000000000000000000000000000000000008152600481018490526200043f9250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ffa1864990602401602060405180830381865afa15801562000413573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000439919062001245565b620006fb565b6200044962000a17565b6040517fffa1864900000000000000000000000000000000000000000000000000000000815260048101829052600090620004e790737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620004bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e1919062001245565b62000cbf565b600d5460405191925060009173ffffffffffffffffffffffffffffffffffffffff90911690620005179062001152565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000551573d6000803e3d6000fd5b50905080604051620005639062001160565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156200059d573d6000803e3d6000fd5b5050604051620005ad906200116e565b604051809103906000f080158015620005ca573d6000803e3d6000fd5b5050604051620005da906200117c565b604051809103906000f080158015620005f7573d6000803e3d6000fd5b505060405162000607906200118a565b604051809103906000f08015801562000624573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200069257600080fd5b505af1158015620006a7573d6000803e3d6000fd5b50505050620006eb6040518060400160405280600c81526020017f536166652061646472657373000000000000000000000000000000000000000081525062000d49565b620006f68262000ddf565b505050565b6200073b6040518060400160405280600981526020017f66616b655661756c74000000000000000000000000000000000000000000000081525062000e82565b600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006040516200078b9062001198565b604051809103906000f080158015620007a8573d6000803e3d6000fd5b506040517f7f7120fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291925090821690637f7120fe90602401600060405180830381600087803b1580156200081757600080fd5b505af11580156200082c573d6000803e3d6000fd5b5050505080600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200086290620011a6565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f080158015620008a3573d6000803e3d6000fd5b50600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa1580156200093d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000963919062001245565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556040517fec58f4b800000000000000000000000000000000000000000000000000000000815283821660048201529082169063ec58f4b890602401600060405180830381600087803b158015620009fa57600080fd5b505af115801562000a0f573d6000803e3d6000fd5b505050505050565b60405162000a2590620011b4565b604051809103906000f08015801562000a42573d6000803e3d6000fd5b50600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000a9690620011c2565b604051809103906000f08015801562000ab3573d6000803e3d6000fd5b50601080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000b0790620011d0565b604051809103906000f08015801562000b24573d6000803e3d6000fd5b50601180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000b7890620011de565b604051809103906000f08015801562000b95573d6000803e3d6000fd5b50601280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000be990620011ec565b604051809103906000f08015801562000c06573d6000803e3d6000fd5b50601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000c5a90620011fa565b604051809103906000f08015801562000c77573d6000803e3d6000fd5b50601480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811062000cfb5762000cfb62001265565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601054600f5460125462000d42939283169291821691859160019116600062000e96565b9392505050565b62000ddc8160405160240162000d60919062001306565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262000fc5565b50565b60405173ffffffffffffffffffffffffffffffffffffffff8216602482015262000ddc90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc20000000000000000000000000000000000000000000000000000000017905262000fc5565b600062000e8f8262000fe6565b5092915050565b60008673ffffffffffffffffffffffffffffffffffffffff16631688f0b98763b63e800d60e01b8888600089600080600060405160240162000edf97969594939291906200131b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825262000f7492918790600401620013ca565b6020604051808303816000875af115801562000f94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fba919062001245565b979650505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260405160200162000ffc91906200140b565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200109c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010c2919062001245565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001119908590879060040162001429565b600060405180830381600087803b1580156200113457600080fd5b505af115801562001149573d6000803e3d6000fd5b50505050915091565b61237a806200146383390190565b61124680620037dd83390190565b610fe98062004a2383390190565b610fa28062005a0c83390190565b610acf80620069ae83390190565b610d06806200747d83390190565b6153a2806200818383390190565b613dd1806200d52583390190565b61097980620112f683390190565b6111688062011c6f83390190565b6124eb8062012dd783390190565b6102ec80620152c283390190565b61047080620155ae83390190565b6000602082840312156200121b57600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8116811462000ddc57600080fd5b6000602082840312156200125857600080fd5b815162000d428162001222565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b83811015620012b157818101518382015260200162001297565b50506000910152565b60008151808452620012d481602086016020860162001294565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600062000d426020830184620012ba565b6101008082528851908201819052600090610120830190602090818c01845b828110156200136e57815173ffffffffffffffffffffffffffffffffffffffff16855293830193908301906001016200133a565b5050508301989098525073ffffffffffffffffffffffffffffffffffffffff9586166040820152808703606082015260008752938516608085015291841660a084015260ff1660c083015290911660e090910152602001919050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000620013fb6060830185620012ba565b9050826040830152949350505050565b600082516200141f81846020870162001294565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006200145a6040830184620012ba565b94935050505056fe60a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610f82806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610858565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461090f565b61013c565b005b6100966100913660046109fd565b610259565b6040516100659190610a9c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610c0f565b905060006102d48a83610475565b9050600081604001511161034757604080518082018252600a81527f6e6f742066756e64656400000000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200182604001518152602001826060015181526020016103d184604001516106f0565b63ffffffff16815260200183608001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152815160208301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908416906370a0823190602401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190610cbd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918416906370a0823190602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190610cbd565b9050806105d8858486610712565b11156106645760405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001612710886060015161271061063c9190610d05565b610647888789610712565b6106519190610d18565b61065b9190610d5e565b905294506106e6565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815260200161271088606001516127106106c29190610d05565b6106cd87868a610712565b6106d79190610d18565b6106e19190610d5e565b905294505b5050505092915050565b600081806106fe8142610d72565b6107089190610d95565b6101369190610dbd565b6000808473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107849190610de1565b905060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610de1565b90508060ff168260ff16111561082d576108118183610e04565b61081c90600a610f3d565b6108269086610d5e565b925061084f565b6108378282610e04565b61084290600a610f3d565b61084c9086610d18565b92505b50509392505050565b60006020828403121561086a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461089a57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108c357600080fd5b50565b60008083601f8401126108d857600080fd5b50813567ffffffffffffffff8111156108f057600080fd5b60208301915083602082850101111561090857600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561092f57600080fd5b6109398b356108a1565b8a35995060208b013561094b816108a1565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561097d57600080fd5b6109898e838f016108c6565b909750955060c08d01359150808211156109a257600080fd5b506109af8d828e016108c6565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156109e857600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a1857600080fd5b8735610a23816108a1565b96506020880135610a33816108a1565b955060408801359450606088013567ffffffffffffffff80821115610a5757600080fd5b610a638b838c016108c6565b909650945060808a0135915080821115610a7c57600080fd5b50610a898a828b016108c6565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610ae2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b0a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b3660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610b6b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bb757858101830151858201604001528201610b9b565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff81168114610c0a57600080fd5b919050565b600060a08284031215610c2157600080fd5b60405160a0810181811067ffffffffffffffff82111715610c6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610c79816108a1565b81526020830135610c89816108a1565b6020820152610c9a60408401610bf6565b604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215610ccf57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561013657610136610cd6565b808202811582820484141761013657610136610cd6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610d6d57610d6d610d2f565b500490565b600063ffffffff80841680610d8957610d89610d2f565b92169190910492915050565b63ffffffff818116838216028082169190828114610db557610db5610cd6565b505092915050565b63ffffffff818116838216019080821115610dda57610dda610cd6565b5092915050565b600060208284031215610df357600080fd5b815160ff8116811461089a57600080fd5b60ff828116828216039081111561013657610136610cd6565b600181815b80851115610e7657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e5c57610e5c610cd6565b80851615610e6957918102915b93841c9390800290610e22565b509250929050565b600082610e8d57506001610136565b81610e9a57506000610136565b8160018114610eb05760028114610eba57610ed6565b6001915050610136565b60ff841115610ecb57610ecb610cd6565b50506001821b610136565b5060208310610133831016604e8410600b8410161715610ef9575081810a610136565b610f038383610e1d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f3557610f35610cd6565b029392505050565b600061089a60ff841683610e7e56fea2646970667358221220ef97e33348ec9642e162f19ce668c9f7fb155d488f8a668360ab608034107eb764736f6c63430008130033608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c63430008130033a26469706673582212207daa45fe40e65ab83905f328e715174032e0ea8b1cae8f884fff2cb7f2ee362364736f6c63430008130033","sourceMap":"1341:2731:81:-:0;;;3288:44:30;;;3328:4;-1:-1:-1;;3288:44:30;;;;;;;;758:28:28;;;;;;;;;;;1341:2731:81;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000d95760003560e01c8063c0406226116200008b578063dfe274a91162000062578063dfe274a914620001fb578063f8ccbf47146200021c578063fbfa77cf146200023b57600080fd5b8063c040622614620001ad578063c45a015514620001b9578063c80916d414620001da57600080fd5b80638406c07911620000c05780638406c079146200014a5780639fbcc9ad146200016b578063b62654fb146200018c57600080fd5b8063294402cc14620000de578063511606301462000129575b600080fd5b601354620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600d54620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b600e54620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b601254620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b600f54620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b620001b762000261565b005b601054620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b601154620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b601454620000ff9073ffffffffffffffffffffffffffffffffffffffff1681565b600c546200022a9060ff1681565b604051901515815260200162000120565b600c54620000ff90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062001208565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b1580156200038b57600080fd5b505af1158015620003a0573d6000803e3d6000fd5b50506040517fffa18649000000000000000000000000000000000000000000000000000000008152600481018490526200043f9250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063ffa1864990602401602060405180830381865afa15801562000413573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000439919062001245565b620006fb565b6200044962000a17565b6040517fffa1864900000000000000000000000000000000000000000000000000000000815260048101829052600090620004e790737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620004bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e1919062001245565b62000cbf565b600d5460405191925060009173ffffffffffffffffffffffffffffffffffffffff90911690620005179062001152565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000551573d6000803e3d6000fd5b50905080604051620005639062001160565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156200059d573d6000803e3d6000fd5b5050604051620005ad906200116e565b604051809103906000f080158015620005ca573d6000803e3d6000fd5b5050604051620005da906200117c565b604051809103906000f080158015620005f7573d6000803e3d6000fd5b505060405162000607906200118a565b604051809103906000f08015801562000624573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200069257600080fd5b505af1158015620006a7573d6000803e3d6000fd5b50505050620006eb6040518060400160405280600c81526020017f536166652061646472657373000000000000000000000000000000000000000081525062000d49565b620006f68262000ddf565b505050565b6200073b6040518060400160405280600981526020017f66616b655661756c74000000000000000000000000000000000000000000000081525062000e82565b600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006040516200078b9062001198565b604051809103906000f080158015620007a8573d6000803e3d6000fd5b506040517f7f7120fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291925090821690637f7120fe90602401600060405180830381600087803b1580156200081757600080fd5b505af11580156200082c573d6000803e3d6000fd5b5050505080600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200086290620011a6565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f080158015620008a3573d6000803e3d6000fd5b50600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055604080517f9b552cc20000000000000000000000000000000000000000000000000000000081529051639b552cc2916004808201926020929091908290030181865afa1580156200093d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000963919062001245565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556040517fec58f4b800000000000000000000000000000000000000000000000000000000815283821660048201529082169063ec58f4b890602401600060405180830381600087803b158015620009fa57600080fd5b505af115801562000a0f573d6000803e3d6000fd5b505050505050565b60405162000a2590620011b4565b604051809103906000f08015801562000a42573d6000803e3d6000fd5b50600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000a9690620011c2565b604051809103906000f08015801562000ab3573d6000803e3d6000fd5b50601080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000b0790620011d0565b604051809103906000f08015801562000b24573d6000803e3d6000fd5b50601180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000b7890620011de565b604051809103906000f08015801562000b95573d6000803e3d6000fd5b50601280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000be990620011ec565b604051809103906000f08015801562000c06573d6000803e3d6000fd5b50601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000c5a90620011fa565b604051809103906000f08015801562000c77573d6000803e3d6000fd5b50601480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811062000cfb5762000cfb62001265565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601054600f5460125462000d42939283169291821691859160019116600062000e96565b9392505050565b62000ddc8160405160240162000d60919062001306565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262000fc5565b50565b60405173ffffffffffffffffffffffffffffffffffffffff8216602482015262000ddc90604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc20000000000000000000000000000000000000000000000000000000017905262000fc5565b600062000e8f8262000fe6565b5092915050565b60008673ffffffffffffffffffffffffffffffffffffffff16631688f0b98763b63e800d60e01b8888600089600080600060405160240162000edf97969594939291906200131b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825262000f7492918790600401620013ca565b6020604051808303816000875af115801562000f94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fba919062001245565b979650505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260405160200162000ffc91906200140b565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200109c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010c2919062001245565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001119908590879060040162001429565b600060405180830381600087803b1580156200113457600080fd5b505af115801562001149573d6000803e3d6000fd5b50505050915091565b61237a806200146383390190565b61124680620037dd83390190565b610fe98062004a2383390190565b610fa28062005a0c83390190565b610acf80620069ae83390190565b610d06806200747d83390190565b6153a2806200818383390190565b613dd1806200d52583390190565b61097980620112f683390190565b6111688062011c6f83390190565b6124eb8062012dd783390190565b6102ec80620152c283390190565b61047080620155ae83390190565b6000602082840312156200121b57600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8116811462000ddc57600080fd5b6000602082840312156200125857600080fd5b815162000d428162001222565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b83811015620012b157818101518382015260200162001297565b50506000910152565b60008151808452620012d481602086016020860162001294565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600062000d426020830184620012ba565b6101008082528851908201819052600090610120830190602090818c01845b828110156200136e57815173ffffffffffffffffffffffffffffffffffffffff16855293830193908301906001016200133a565b5050508301989098525073ffffffffffffffffffffffffffffffffffffffff9586166040820152808703606082015260008752938516608085015291841660a084015260ff1660c083015290911660e090910152602001919050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000620013fb6060830185620012ba565b9050826040830152949350505050565b600082516200141f81846020870162001294565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006200145a6040830184620012ba565b94935050505056fe60a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610f82806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610858565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461090f565b61013c565b005b6100966100913660046109fd565b610259565b6040516100659190610a9c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610c0f565b905060006102d48a83610475565b9050600081604001511161034757604080518082018252600a81527f6e6f742066756e64656400000000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200182604001518152602001826060015181526020016103d184604001516106f0565b63ffffffff16815260200183608001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152815160208301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908416906370a0823190602401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190610cbd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918416906370a0823190602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190610cbd565b9050806105d8858486610712565b11156106645760405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001612710886060015161271061063c9190610d05565b610647888789610712565b6106519190610d18565b61065b9190610d5e565b905294506106e6565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815260200161271088606001516127106106c29190610d05565b6106cd87868a610712565b6106d79190610d18565b6106e19190610d5e565b905294505b5050505092915050565b600081806106fe8142610d72565b6107089190610d95565b6101369190610dbd565b6000808473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107849190610de1565b905060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610de1565b90508060ff168260ff16111561082d576108118183610e04565b61081c90600a610f3d565b6108269086610d5e565b925061084f565b6108378282610e04565b61084290600a610f3d565b61084c9086610d18565b92505b50509392505050565b60006020828403121561086a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461089a57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108c357600080fd5b50565b60008083601f8401126108d857600080fd5b50813567ffffffffffffffff8111156108f057600080fd5b60208301915083602082850101111561090857600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561092f57600080fd5b6109398b356108a1565b8a35995060208b013561094b816108a1565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561097d57600080fd5b6109898e838f016108c6565b909750955060c08d01359150808211156109a257600080fd5b506109af8d828e016108c6565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156109e857600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a1857600080fd5b8735610a23816108a1565b96506020880135610a33816108a1565b955060408801359450606088013567ffffffffffffffff80821115610a5757600080fd5b610a638b838c016108c6565b909650945060808a0135915080821115610a7c57600080fd5b50610a898a828b016108c6565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610ae2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b0a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b3660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610b6b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bb757858101830151858201604001528201610b9b565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff81168114610c0a57600080fd5b919050565b600060a08284031215610c2157600080fd5b60405160a0810181811067ffffffffffffffff82111715610c6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610c79816108a1565b81526020830135610c89816108a1565b6020820152610c9a60408401610bf6565b604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215610ccf57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561013657610136610cd6565b808202811582820484141761013657610136610cd6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610d6d57610d6d610d2f565b500490565b600063ffffffff80841680610d8957610d89610d2f565b92169190910492915050565b63ffffffff818116838216028082169190828114610db557610db5610cd6565b505092915050565b63ffffffff818116838216019080821115610dda57610dda610cd6565b5092915050565b600060208284031215610df357600080fd5b815160ff8116811461089a57600080fd5b60ff828116828216039081111561013657610136610cd6565b600181815b80851115610e7657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e5c57610e5c610cd6565b80851615610e6957918102915b93841c9390800290610e22565b509250929050565b600082610e8d57506001610136565b81610e9a57506000610136565b8160018114610eb05760028114610eba57610ed6565b6001915050610136565b60ff841115610ecb57610ecb610cd6565b50506001821b610136565b5060208310610133831016604e8410600b8410161715610ef9575081810a610136565b610f038383610e1d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f3557610f35610cd6565b029392505050565b600061089a60ff841683610e7e56fea2646970667358221220ef97e33348ec9642e162f19ce668c9f7fb155d488f8a668360ab608034107eb764736f6c63430008130033608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c63430008130033608060405234801561001057600080fd5b50610ce6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637f7120fe11610076578063d0ebdbe71161005b578063d0ebdbe71461019c578063ec58f4b8146101af578063f84436bd146101c257600080fd5b80637f7120fe146101745780638fd57b921461018957600080fd5b806302cc250d146100a857806343218e19146100f6578063481c6a75146101165780635624b25b14610161575b600080fd5b6100e16100b63660046109a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101096101043660046109f2565b6101d5565b6040516100ed9190610b40565b60005461013c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b61010961016f366004610b53565b610277565b6101876101823660046109a1565b6102ff565b005b6101876101973660046109a1565b610483565b6101876101aa3660046109a1565b61058d565b6101876101bd3660046109a1565b6106e8565b6101096101d03660046109f2565b6107ef565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516101fe9190610b75565b600060405180830381855af49150503d8060008114610239576040519150601f19603f3d011682016040523d82523d6000602084013e61023e565b606091505b506040519093509091506102709061025c9084908490602001610b91565b604051602081830303815290604052610970565b5092915050565b60606000610286836020610be8565b67ffffffffffffffff81111561029e5761029e6109c3565b6040519080825280601f01601f1916602001820160405280156102c8576020820181803683370190505b50905060005b838110156102f55784810154602080830284010152806102ed81610bff565b9150506102ce565b5090505b92915050565b600054610100900460ff16806103145750303b155b80610322575060005460ff16155b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e697469616c697a61626c653a20696e697469616c697a656400000000000060448201526064015b60405180910390fd5b600054610100900460ff161580156103cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff85169081029190911782556040805191825260208201929092527f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a1801561047f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f640e18a2587e1d83e4fdabf70257d0a800ca4b2c1aaad1dfc485a4ad8bbbd6c691015b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314806105f55750336105dd7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff16145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f475076323a206e6f7420617574686f72697a65640000000000000000000000006044820152606401610384565b6000805473ffffffffffffffffffffffffffffffffffffffff838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161790945560408051918252939092041660208201819052917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a4350910160405180910390a15050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f475076323a2063616c6c6572206e6f74206d616e6167657200000000000000006044820152606401610384565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f41f9d09dd5159251f8a8e482bbe097b7c01a5e6f70c5a0ddb494906464fc9dd79101610582565b606060006343218e1960e01b848460405160240161080e929190610c37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061089d908390610b75565b6000604051808303816000865af19150503d80600081146108da576040519150601f19603f3d011682016040523d82523d6000602084013e6108df565b606091505b50905080925050600082600184516108f79190610c6e565b8151811061090757610907610c81565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610952836001855161094e9190610c6e565b9052565b801561095f5750506102f9565b61096883610970565b505092915050565b805160208201fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461099c57600080fd5b919050565b6000602082840312156109b357600080fd5b6109bc82610978565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610a0557600080fd5b610a0e83610978565b9150602083013567ffffffffffffffff80821115610a2b57600080fd5b818501915085601f830112610a3f57600080fd5b813581811115610a5157610a516109c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a9757610a976109c3565b81604052828152886020848701011115610ab057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610aed578181015183820152602001610ad5565b50506000910152565b60008151808452610b0e816020860160208601610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109bc6020830184610af6565b60008060408385031215610b6657600080fd5b50508035926020909101359150565b60008251610b87818460208701610ad2565b9190910192915050565b60008351610ba3818460208801610ad2565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102f9576102f9610bb9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c3057610c30610bb9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610c666040830184610af6565b949350505050565b818103818111156102f9576102f9610bb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220093e336233f732d281c822441884e1459ea0de8a9b61a51d6675c783e26e5a8a64736f6c634300081300336101006040523480156200001257600080fd5b50604051620053a2380380620053a283398101604081905262000035916200016a565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246608082018190523060a08301529060c00160408051601f19818403018152908290528051602090910120608052600180556001600160a01b0380851660a052831660c052829150620001009062000143565b6001600160a01b039091168152602001604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160a01b031660e05250620001a99050565b6114958062003f0d83390190565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b60805160a05160c05160e051613cf9620002146000396000818161025d0152818161056401528181610d7001526114a701526000818161037d01526105fb01526000818161014c01528181610429015261092401526000818161032901526124f20152613cf96000f3fe6080604052600436106100ec5760003560e01c80639b552cc21161008a578063ed9f35ce11610059578063ed9f35ce146102f7578063f698da2514610317578063f84436bd1461034b578063fbfa77cf1461036b57600080fd5b80639b552cc21461024b578063a2a7d51b1461027f578063d08d33d11461029f578063ec6cb13f146102d757600080fd5b80632479fb6e116100c65780632479fb6e1461019857806343218e19146101de5780635624b25b1461020b578063845a101f1461022b57600080fd5b806313d79a0b146100f857806315337bc01461011a5780632335c76b1461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004612e77565b61039f565b005b34801561012657600080fd5b50610118610135366004612f7e565b610666565b34801561014657600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a457600080fd5b506101d06101b33660046130cc565b805160208183018101805160028252928201919093012091525481565b60405190815260200161018f565b3480156101ea57600080fd5b506101fe6101f9366004613126565b610775565b60405161018f91906131e4565b34801561021757600080fd5b506101fe6102263660046131f7565b610817565b34801561023757600080fd5b50610118610246366004613219565b61089f565b34801561025757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b5061011861029a3660046132b5565b6110e1565b3480156102ab57600080fd5b506101d06102ba3660046130cc565b805160208183018101805160008252928201919093012091525481565b3480156102e357600080fd5b506101186102f23660046132f9565b611140565b34801561030357600080fd5b506101186103123660046132b5565b611282565b34801561032357600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b34801561035757600080fd5b506101fe610366366004613126565b6112dd565b34801561037757600080fd5b5061016e7f000000000000000000000000000000000000000000000000000000000000000081565b6002600154036103f65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190613350565b6104f55760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b6105118160005b60200281019061050c919061339c565b61145e565b6000806105228989898989896115e1565b6040517f7d10d11f000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637d10d11f90610599908590600401613404565b600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050506105e1836001600381106104fc576104fc61336d565b61062173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826117de565b61062c8360026104fc565b60405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a250506001805550505050505050565b60006106728383611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146106db5760405162461bcd60e51b815260206004820152601f60248201527f475076323a2063616c6c657220646f6573206e6f74206f776e206f726465720060448201526064016103ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002848460405161070e92919061348d565b9081526020016040518091039020819055508073ffffffffffffffffffffffffffffffffffffffff167f875b6cb035bbd4ac6500fabc6d1e4ca5bdc58a3e2b424ccb5c24cdbebeb009a984846040516107689291906134e6565b60405180910390a2505050565b606060008373ffffffffffffffffffffffffffffffffffffffff168360405161079e91906134fa565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50604051909350909150610810906107fc9084908490602001613516565b604051602081830303815290604052611b91565b5092915050565b6060600061082683602061356d565b67ffffffffffffffff81111561083e5761083e612fc0565b6040519080825280601f01601f191660200182016040528015610868576020820181803683370190505b50905060005b8381101561089557848101546020808302840101528061088d81613584565b91505061086e565b5090505b92915050565b6002600154036108f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103ed565b60026001556040517f02cc250d0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302cc250d90602401602060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190613350565b6109f05760405162461bcd60e51b815260206004820152601260248201527f475076323a206e6f74206120736f6c766572000000000000000000000000000060448201526064016103ed565b60006109fa611b99565b8051909150610a0b82868686611c3f565b60007ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677582610100015114610a40576001610a43565b60005b604080516080810182526000808252602082018181528284018281526060808501848152958a015173ffffffffffffffffffffffffffffffffffffffff90811686526101408a01517f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce908114909452908a0151169052610160870151149092529192508667ffffffffffffffff811115610adf57610adf612fc0565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50610100850151909150610120870135907f0c4d888d74c0118b6b7e14c1f4c4b767f24454879a703be6fda34e9111cb988b01610bfb578460800151811015610b935760405162461bcd60e51b815260206004820152601360248201527f475076323a206c696d697420746f6f206c6f770000000000000000000000000060448201526064016103ed565b610ba08560600151611cdd565b82886000013581518110610bb657610bb661336d565b602002602001018181525050610bcb81611cdd565b610bd4906135bc565b82886020013581518110610bea57610bea61336d565b602002602001018181525050610cb3565b8460600151811115610c4f5760405162461bcd60e51b815260206004820152601460248201527f475076323a206c696d697420746f6f206869676800000000000000000000000060448201526064016103ed565b610c5881611cdd565b82886000013581518110610c6e57610c6e61336d565b602002602001018181525050610c878560800151611cdd565b610c90906135bc565b82886020013581518110610ca657610ca661336d565b6020026020010181815250505b6040805160808101825260008082526020820181905291810182905260608101919091528660400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560000151816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508560e0015181604001818152505085610140015181606001818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634817a286878f8f8f8f8b8b8f60a001518b6040518a63ffffffff1660e01b8152600401610ddb999897969594939291906136a9565b6000604051808303816000875af1158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e4091908101906138d1565b90506000886020015190506000610e73838c6000013581518110610e6657610e6661336d565b6020026020010151611d53565b90506000610ea6848d6020013581518110610e9057610e9061336d565b6020026020010151610ea1906135bc565b611d53565b9050600283604051610eb891906134fa565b908152602001604051809103902054600014610f165760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467758a610100015103610fbf5789606001518214610f955760405162461bcd60e51b815260206004820152601f60248201527f475076323a2073656c6c20616d6f756e74206e6f74207265737065637465640060448201526064016103ed565b8960600151600284604051610faa91906134fa565b90815260405190819003602001902055611038565b896080015181146110125760405162461bcd60e51b815260206004820152601e60248201527f475076323a2062757920616d6f756e74206e6f7420726573706563746564000060448201526064016103ed565b896080015160028460405161102791906134fa565b908152604051908190036020019020555b8a6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc178b600001518c6020015185858f60e001518960405161109896959493929190613977565b60405180910390a260405133907f40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db490600090a25050600180555050505050505050505050505050565b3033146111305760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60008383611da5565b5050565b600061114c8484611b22565b5091505073ffffffffffffffffffffffffffffffffffffffff811633146111b55760405162461bcd60e51b815260206004820152601a60248201527f475076323a2063616e6e6f74207072657369676e206f7264657200000000000060448201526064016103ed565b8115611206577ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600085856040516111f192919061348d565b9081526040519081900360200190205561122a565b600080858560405161121992919061348d565b908152604051908190036020019020555b8073ffffffffffffffffffffffffffffffffffffffff167f01bf7c8b0ca55deecbea89d7e58295b7ffbf685fd0d96801034ba8c6ffe1c68d858585604051611274939291906139c2565b60405180910390a250505050565b3033146112d15760405162461bcd60e51b815260206004820152601860248201527f475076323a206e6f7420616e20696e746572616374696f6e000000000000000060448201526064016103ed565b61113c60028383611da5565b606060006343218e1960e01b84846040516024016112fc9291906139e8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061138b9083906134fa565b6000604051808303816000865af19150503d80600081146113c8576040519150601f19603f3d011682016040523d82523d6000602084013e6113cd565b606091505b50905080925050600082600184516113e59190613a17565b815181106113f5576113f561336d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050611440836001855161143c9190613a17565b9052565b801561144d575050610899565b61145683611b91565b505092915050565b60005b818110156115dc573683838381811061147c5761147c61336d565b905060200281019061148e9190613a2a565b905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166114d46020830183613a5e565b73ffffffffffffffffffffffffffffffffffffffff16036115375760405162461bcd60e51b815260206004820152601b60248201527f475076323a20666f7262696464656e20696e746572616374696f6e000000000060448201526064016103ed565b61154081611e78565b61154d6020820182613a5e565b73ffffffffffffffffffffffffffffffffffffffff167fed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2826020013561159284611ec8565b604080519283527fffffffff0000000000000000000000000000000000000000000000000000000090911660208301520160405180910390a2506115d581613584565b9050611461565b505050565b60608060006115ee611b99565b90508367ffffffffffffffff81111561160957611609612fc0565b60405190808252806020026020018201604052801561167957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116275790505b5092508367ffffffffffffffff81111561169557611695612fc0565b60405190808252806020026020018201604052801561170557816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116b35790505b50915060005b848110156117d157368686838181106117265761172661336d565b90506020028101906117389190613a7b565b9050611746838c8c84611c3f565b6117c0838a8a843581811061175d5761175d61336d565b905060200201358b8b856020013581811061177a5761177a61336d565b905060200201358461012001358987815181106117995761179961336d565b60200260200101518988815181106117b3576117b361336d565b6020026020010151611ef2565b506117ca81613584565b905061170b565b5050965096945050505050565b6000815167ffffffffffffffff8111156117fa576117fa612fc0565b60405190808252806020026020018201604052801561187157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816118185790505b5090506000805b8351811015611a8d5760008482815181106118955761189561336d565b6020026020010151905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff16036119ad577f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce81606001510361195d5760405162461bcd60e51b815260206004820152601e60248201527f475076323a20756e737570706f7274656420696e7465726e616c20455448000060448201526064016103ed565b8051604080830151905173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156119a7573d6000803e3d6000fd5b50611a7a565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9816060015103611a0b57805160408201516020830151611a069273ffffffffffffffffffffffffffffffffffffffff90911691612294565b611a7a565b60008484611a1881613584565b955081518110611a2a57611a2a61336d565b602090810291909101810151600081528382015173ffffffffffffffffffffffffffffffffffffffff90811692820192909252604080850151908201523060608201528351909116608090910152505b5080611a8581613584565b915050611878565b508015611b1c578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630e8e3e8490611ae9908590600401613aaf565b600060405180830381600087803b158015611b0357600080fd5b505af1158015611b17573d6000803e3d6000fd5b505050505b50505050565b6000808060388414611b765760405162461bcd60e51b815260206004820152601160248201527f475076323a20696e76616c69642075696400000000000000000000000000000060448201526064016103ed565b5050823593602084013560601c936034013560e01c92509050565b805160208201fd5b604080516102008101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e083018290528252606060208301819052928201819052918101919091526040805160388082526060820190925290602082018180368337505050602082015290565b83516000611c4f8386868561234d565b9050600080611c6c8484611c67610140890189613b48565b61247b565b91509150611c8f82828660a001518b602001516125b2909392919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff81166040890152611cb58482612615565b73ffffffffffffffffffffffffffffffffffffffff1660609098019790975250505050505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611d4f5760405162461bcd60e51b815260206004820152601960248201527f53616665436173743a20696e74323536206f766572666c6f770000000000000060448201526064016103ed565b5090565b600080821215611d4f5760405162461bcd60e51b815260206004820152601660248201527f53616665436173743a206e6f7420706f7369746976650000000000000000000060448201526064016103ed565b60005b81811015611b1c57366000848484818110611dc557611dc561336d565b9050602002810190611dd79190613b48565b915091506000611de78383611b22565b92505050428163ffffffff1610611e405760405162461bcd60e51b815260206004820152601760248201527f475076323a206f72646572207374696c6c2076616c696400000000000000000060448201526064016103ed565b6000878484604051611e5392919061348d565b9081526040519081900360200190205550611e719150829050613584565b9050611da8565b6000611e876020830183613a5e565b90506020820135366000611e9e6040860186613b48565b9150915060405181838237600080838387895af1611ec0573d6000803e3d6000fd5b505050505050565b60003681611ed96040850185613b48565b909250905060048110611eeb57813592505b5050919050565b8551602087015160a08201514263ffffffff9091161015611f555760405162461bcd60e51b815260206004820152601360248201527f475076323a206f7264657220657870697265640000000000000000000000000060448201526064016103ed565b6080820151611f649087612647565b6060830151611f739089612647565b1015611fc15760405162461bcd60e51b815260206004820152601f60248201527f475076323a206c696d6974207072696365206e6f74207265737065637465640060448201526064016103ed565b6000806000807ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775866101000151036120d7578561012001511561202d578893506120268660600151612020868960e0015161264790919063ffffffff16565b906126c6565b915061203c565b856060015193508560e0015191505b6120508a61204a868e612647565b90612721565b925061207c8460028760405161206691906134fa565b90815260405190819003602001902054906127a2565b905085606001518111156120d25760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b612194565b8561012001511561210b578892506121048660800151612020858960e0015161264790919063ffffffff16565b915061211a565b856080015192508560e0015191505b6121288b612020858d612647565b935061213e8360028760405161206691906134fa565b905085608001518111156121945760405162461bcd60e51b815260206004820152601260248201527f475076323a206f726465722066696c6c6564000000000000000000000000000060448201526064016103ed565b61219e84836127a2565b9350806002866040516121b191906134fa565b9081526020016040518091039020819055508b6040015173ffffffffffffffffffffffffffffffffffffffff167fa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17876000015188602001518787878b60405161221f96959493929190613977565b60405180910390a250506040808b015173ffffffffffffffffffffffffffffffffffffffff9081168852855181166020808a0191909152888301949094526101408601516060988901529a8701518b16865282850151909a169185019190915297830197909752610160015191015250505050565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff84166004830152602482018390529060008060448382895af16122f7573d6000803e3d6000fd5b5061230184612801565b611b1c5760405162461bcd60e51b815260206004820152601560248201527f475076323a206661696c6564207472616e73666572000000000000000000000060448201526064016103ed565b6000838386358181106123625761236261336d565b90506020020160208101906123779190613a5e565b73ffffffffffffffffffffffffffffffffffffffff168252838360208701358181106123a5576123a561336d565b90506020020160208101906123ba9190613a5e565b73ffffffffffffffffffffffffffffffffffffffff1660208301526123e56060860160408701613a5e565b73ffffffffffffffffffffffffffffffffffffffff166040830152606080860135908301526080808601359083015261242460c0860160a08701613bad565b63ffffffff1660a083015260c0808601359083015260e080860135908301526124516101008601356128b2565b61016087019190915261014086019190915290151561012085015261010090930152509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f190100000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006002820152602281019190915260429020600080856003811115612537576125376135f4565b0361254e57612547828585612a1b565b90506125a9565b6001856003811115612562576125626135f4565b0361257257612547828585612a30565b6002856003811115612586576125866135f4565b0361259657612547828585612a94565b6125a68285858960a00151612bbf565b90505b94509492505050565b60388451146126035760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f770000000000000060448201526064016103ed565b60388401526034830152602090910152565b604082015160009073ffffffffffffffffffffffffffffffffffffffff1661263e575080610899565b50506040015190565b60008260000361265957506000610899565b6000612665838561356d565b9050826126728583613c02565b146126bf5760405162461bcd60e51b815260206004820152601660248201527f536166654d6174683a206d756c206f766572666c6f770000000000000000000060448201526064016103ed565b9392505050565b60008082116127175760405162461bcd60e51b815260206004820152601760248201527f536166654d6174683a206469766973696f6e206279203000000000000000000060448201526064016103ed565b6126bf8284613c02565b60008082116127725760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174683a206365696c696e67206469766973696f6e20627920300060448201526064016103ed565b61277c8284613c16565b1561278857600161278b565b60005b60ff166127988385613c02565b6126bf9190613c2a565b6000806127af8385613c2a565b9050838110156126bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103ed565b6000612826565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d8015612865576020811461289f576128607f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f612808565b6128ac565b823b612896576128967f475076323a206e6f74206120636f6e74726163740000000000000000000000006014612808565b600191506128ac565b3d6000803e600051151591505b50919050565b6000806000806000856001166000036128ed577ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467759450612911565b7f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc94505b60028616151593506008861660000361294c577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc992506129a3565b8560041660000361297f577fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063292506129a3565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce92505b856010166000036129d6577f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc991506129fa565b7f4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce91505b600586901c6003811115612a1057612a106135f4565b905091939590929450565b6000612a28848484612ce1565b949350505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c01604051602081830303815290604052805190602001209050612a8b818585612ce1565b95945050505050565b813560601c366000612aa98460148188613c3d565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000080825292945090925073ffffffffffffffffffffffffffffffffffffffff851690631626ba7e90612b06908a9087908790600401613c67565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190613c81565b7fffffffff000000000000000000000000000000000000000000000000000000001614612bb65760405162461bcd60e51b815260206004820152601f60248201527f475076323a20696e76616c69642065697031323731207369676e61747572650060448201526064016103ed565b50509392505050565b600060148314612c115760405162461bcd60e51b815260206004820152601c60248201527f475076323a206d616c666f726d6564207072657369676e61747572650000000060448201526064016103ed565b506040805160388082526060828101909352853590921c9160009190602082018180368337019050509050612c48818784866125b2565b7ff59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f60001c600082604051612c7c91906134fa565b90815260200160405180910390205414612cd85760405162461bcd60e51b815260206004820152601960248201527f475076323a206f72646572206e6f74207072657369676e65640000000000000060448201526064016103ed565b50949350505050565b600060418214612d335760405162461bcd60e51b815260206004820152601f60248201527f475076323a206d616c666f726d6564206563647361207369676e61747572650060448201526064016103ed565b604080516000815260208082018084528790528583013560f81c92820183905285356060830181905290860135608083018190529092909160019060a0016020604051602081039080840390855afa158015612d93573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015194505073ffffffffffffffffffffffffffffffffffffffff8416612e215760405162461bcd60e51b815260206004820152601d60248201527f475076323a20696e76616c6964206563647361207369676e617475726500000060448201526064016103ed565b5050509392505050565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208260051b8501011115612e7057600080fd5b9250929050565b60008060008060008060006080888a031215612e9257600080fd5b873567ffffffffffffffff80821115612eaa57600080fd5b612eb68b838c01612e2b565b909950975060208a0135915080821115612ecf57600080fd5b612edb8b838c01612e2b565b909750955060408a0135915080821115612ef457600080fd5b612f008b838c01612e2b565b909550935060608a0135915080821115612f1957600080fd5b508801606081018a1015612f2c57600080fd5b8091505092959891949750929550565b60008083601f840112612f4e57600080fd5b50813567ffffffffffffffff811115612f6657600080fd5b602083019150836020828501011115612e7057600080fd5b60008060208385031215612f9157600080fd5b823567ffffffffffffffff811115612fa857600080fd5b612fb485828601612f3c565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561303657613036612fc0565b604052919050565b600082601f83011261304f57600080fd5b813567ffffffffffffffff81111561306957613069612fc0565b61309a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612fef565b8181528460208386010111156130af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156130de57600080fd5b813567ffffffffffffffff8111156130f557600080fd5b612a288482850161303e565b73ffffffffffffffffffffffffffffffffffffffff8116811461312357600080fd5b50565b6000806040838503121561313957600080fd5b823561314481613101565b9150602083013567ffffffffffffffff81111561316057600080fd5b61316c8582860161303e565b9150509250929050565b60005b83811015613191578181015183820152602001613179565b50506000910152565b600081518084526131b2816020860160208601613176565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006126bf602083018461319a565b6000806040838503121561320a57600080fd5b50508035926020909101359150565b60008060008060006060868803121561323157600080fd5b853567ffffffffffffffff8082111561324957600080fd5b61325589838a01612e2b565b9097509550602088013591508082111561326e57600080fd5b61327a89838a01612e2b565b9095509350604088013591508082111561329357600080fd5b50860161016081890312156132a757600080fd5b809150509295509295909350565b600080602083850312156132c857600080fd5b823567ffffffffffffffff8111156132df57600080fd5b612fb485828601612e2b565b801515811461312357600080fd5b60008060006040848603121561330e57600080fd5b833567ffffffffffffffff81111561332557600080fd5b61333186828701612f3c565b9094509250506020840135613345816132eb565b809150509250925092565b60006020828403121561336257600080fd5b81516126bf816132eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133d157600080fd5b83018035915067ffffffffffffffff8211156133ec57600080fd5b6020019150600581901b3603821315612e7057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156134815761346e83855173ffffffffffffffffffffffffffffffffffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301525050565b9284019260809290920191600101613420565b50909695505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612a2860208301848661349d565b6000825161350c818460208701613176565b9190910192915050565b60008351613528818460208801613176565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108995761089961353e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b5576135b561353e565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082036135ed576135ed61353e565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183526000602080850194508260005b8581101561366e57813561364681613101565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613633565b509495945050505050565b600081518084526020808501945080840160005b8381101561366e5781518752958201959082019060010161368d565b60006101a0820160028c106136c0576136c06135f4565b8b83526101a060208401528990526101c060058a901b830181019083018b60005b8c8110156137f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618f360301811261374257600080fd5b8e810190508035855260208101356020860152604081013560408601526060810135606086015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811261379e57600080fd5b0160208101903567ffffffffffffffff8111156137ba57600080fd5b8036038213156137c957600080fd5b60a060808701526137de60a08701828461349d565b9550505060209283019291909101906001016136e1565b505050828103604084015261380b81898b613623565b9050613859606084018873ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e084015261386b8187613679565b91505061388161010083018563ffffffff169052565b825173ffffffffffffffffffffffffffffffffffffffff908116610120840152602084015116610140830152604083015161016083015260608301516101808301529a9950505050505050505050565b600060208083850312156138e457600080fd5b825167ffffffffffffffff808211156138fc57600080fd5b818501915085601f83011261391057600080fd5b81518181111561392257613922612fc0565b8060051b9150613933848301612fef565b818152918301840191848101908884111561394d57600080fd5b938501935b8385101561396b57845182529385019390850190613952565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015283608083015260c060a083015261396b60c083018461319a565b6040815260006139d660408301858761349d565b90508215156020830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a28604083018461319a565b818103818111156108995761089961353e565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261350c57600080fd5b600060208284031215613a7057600080fd5b81356126bf81613101565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea183360301811261350c57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613b3b578151805160048110613ae857613ae86135f4565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a09093019290850190600101613acc565b5091979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b7d57600080fd5b83018035915067ffffffffffffffff821115613b9857600080fd5b602001915036819003821315612e7057600080fd5b600060208284031215613bbf57600080fd5b813563ffffffff811681146126bf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613c1157613c11613bd3565b500490565b600082613c2557613c25613bd3565b500690565b808201808211156108995761089961353e565b60008085851115613c4d57600080fd5b83861115613c5a57600080fd5b5050820193919092039150565b838152604060208201526000612a8b60408301848661349d565b600060208284031215613c9357600080fd5b81517fffffffff00000000000000000000000000000000000000000000000000000000811681146126bf57600080fdfea2646970667358221220d967b884209f638550f38d2c461b9aff6c37dcfc53e13b38261d89edb05d436064736f6c6343000813003360c060405234801561001057600080fd5b5060405161149538038061149583398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516113e86100ad6000396000818161015c0152818161021e015261030a0152600081816093015261026901526113e86000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634817a2861461003b5780637d10d11f14610064575b600080fd5b61004e610049366004610da7565b610079565b60405161005b9190610eb6565b60405180910390f35b610077610072366004610ed0565b610251565b005b60603373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f7200000000000000000000000000000060448201526064015b60405180910390fd5b6040517f945bcec900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063945bcec99061019d908c908c908c908c908c908c908c90600401611003565b6000604051808303816000875af11580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261020291908101906111dd565b905061024573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168333610336565b98975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f475076323a206e6f742063726561746f720000000000000000000000000000006044820152606401610116565b61033273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683833361061b565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61035b604084016020850161126e565b73ffffffffffffffffffffffffffffffffffffffff16036103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc982606001350361044b57610446610413602084018461126e565b8260408501803590610428906020880161126e565b73ffffffffffffffffffffffffffffffffffffffff1692919061096d565b505050565b604080516001808252818301909252600091816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104625790505090506000816000815181106104d2576104d261128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063284606001351461050e576002610511565b60035b8190600381111561052457610524610f45565b9081600381111561053757610537610f45565b90525061054a604085016020860161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808601359083015261057f9085018561126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015283811660808301526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815290861690630e8e3e84906105e29085906004016112ba565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050505050505050565b60008267ffffffffffffffff81111561063657610636610b66565b6040519080825280602002602001820160405280156106ad57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106545790505b5090506000805b848110156108d657368686838181106106cf576106cf61128b565b60800291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506106ff604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff160361077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f475076323a2063616e6e6f74207472616e73666572206e6174697665204554486044820152606401610116565b7f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98160600135036107d1576107cc6107b7602083018361126e565b8660408401803590610428906020870161126e565b6108c3565b600084846107de81611353565b9550815181106107f0576107f061128b565b602002602001015190507fabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea063282606001351461082c57600161082f565b60035b8190600381111561084257610842610f45565b9081600381111561085557610855610f45565b905250610868604083016020840161126e565b73ffffffffffffffffffffffffffffffffffffffff166020808301919091526040808401359083015261089d9083018361126e565b73ffffffffffffffffffffffffffffffffffffffff908116606083015286166080909101525b50806108ce81611353565b9150506106b4565b508015610965578082526040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690630e8e3e84906109329085906004016112ba565b600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050505b505050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff8581166004840152841660248301526044820183905290600080606483828a5af16109d8573d6000803e3d6000fd5b506109e285610a4f565b610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d000000000000006044820152606401610116565b5050505050565b6000610a8e565b7f08c379a000000000000000000000000000000000000000000000000000000000600052602060045280602452508060445260646000fd5b3d8015610acd5760208114610b0757610ac87f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f610a56565b610b14565b823b610afe57610afe7f475076323a206e6f74206120636f6e74726163740000000000000000000000006014610a56565b60019150610b14565b3d6000803e600051151591505b50919050565b60008083601f840112610b2c57600080fd5b50813567ffffffffffffffff811115610b4457600080fd5b6020830191508360208260051b8501011115610b5f57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bdc57610bdc610b66565b604052919050565b600067ffffffffffffffff821115610bfe57610bfe610b66565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2a57600080fd5b50565b600082601f830112610c3e57600080fd5b81356020610c53610c4e83610be4565b610b95565b82815260059290921b84018101918181019086841115610c7257600080fd5b8286015b84811015610c96578035610c8981610c08565b8352918301918301610c76565b509695505050505050565b80358015158114610cb157600080fd5b919050565b600060808284031215610cc857600080fd5b6040516080810181811067ffffffffffffffff82111715610ceb57610ceb610b66565b6040529050808235610cfc81610c08565b8152610d0a60208401610ca1565b60208201526040830135610d1d81610c08565b6040820152610d2e60608401610ca1565b60608201525092915050565b600082601f830112610d4b57600080fd5b81356020610d5b610c4e83610be4565b82815260059290921b84018101918181019086841115610d7a57600080fd5b8286015b84811015610c965780358352918301918301610d7e565b600060808284031215610b1457600080fd5b6000806000806000806000806101a0898b031215610dc457600080fd5b883560028110610dd357600080fd5b9750602089013567ffffffffffffffff80821115610df057600080fd5b610dfc8c838d01610b1a565b909950975060408b0135915080821115610e1557600080fd5b610e218c838d01610c2d565b9650610e308c60608d01610cb6565b955060e08b0135915080821115610e4657600080fd5b50610e538b828c01610d3a565b9350506101008901359150610e6c8a6101208b01610d95565b90509295985092959890939650565b600081518084526020808501945080840160005b83811015610eab57815187529582019590820190600101610e8f565b509495945050505050565b602081526000610ec96020830184610e7b565b9392505050565b60008060208385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b818501915085601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b8660208260071b8501011115610f3357600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526020808501945080840160005b83811015610eab57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101610fd1565b600061012080830160028b1061101b5761101b610f45565b8a84526020808501929092528890526101408084019160058a901b8501909101908a60005b8b811015611151577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec087850301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618e36030181126110a157600080fd5b8d01803585528381013584860152604080820135908601526060808201359086015260a0608080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126110fc57600080fd5b90920185810192903567ffffffffffffffff81111561111a57600080fd5b80360384131561112957600080fd5b828289015261113b8389018286610f74565b9887019897505050928401925050600101611040565b50505083810360408501526111668189610fbd565b9150506111b5606084018773ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b82810360e08401526111c78186610e7b565b9150508261010083015298975050505050505050565b600060208083850312156111f057600080fd5b825167ffffffffffffffff81111561120757600080fd5b8301601f8101851361121857600080fd5b8051611226610c4e82610be4565b81815260059190911b8201830190838101908783111561124557600080fd5b928401925b828410156112635783518252928401929084019061124a565b979650505050505050565b60006020828403121561128057600080fd5b8135610ec981610c08565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b828110156113465781518051600481106112f3576112f3610f45565b85528087015173ffffffffffffffffffffffffffffffffffffffff908116888701528682015187870152606080830151821690870152608091820151169085015260a090930192908501906001016112d7565b5091979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207d5e9c87ee2e06093be58fb927d92b7c3797c42de77f505eaaf0b4f7c08f8e1764736f6c63430008130033608060405234801561001057600080fd5b506001600455613dac806100256000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a0323146105f5578063f698da2514610615578063f8dc5dd91461067c578063ffa1ad741461069c5761020d565b8063e19a9dd914610580578063e318b52b146105a0578063e75235b8146105c0578063e86637db146105d55761020d565b8063cc2f8452116100d1578063cc2f8452146104f2578063d4d9bdcd14610520578063d8d11f7814610540578063e009cfde146105605761020d565b8063affed0e01461049c578063b4faba09146104b2578063b63e800d146104d25761020d565b80635624b25b1161016f5780636a7612021161013e5780636a7612021461040f5780637d83297414610422578063934f3a111461045a578063a0e67e2b1461047a5761020d565b80635624b25b146103755780635ae6bd37146103a2578063610b5925146103cf578063694e80c3146103ef5761020d565b80632f54bf6e116101ab5780632f54bf6e146102ea5780633408e4701461030a578063468721a7146103275780635229073f146103475761020d565b80630d582f131461027357806312fb68e0146102955780632d9ad53d146102b55761020d565b3661020d5760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561021957600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024457005b36600080373360601b365260008060143601600080855af190503d6000803e8061026d573d6000fd5b503d6000f35b34801561027f57600080fd5b5061029361028e36600461312a565b6106e5565b005b3480156102a157600080fd5b506102936102b0366004613230565b6108ff565b3480156102c157600080fd5b506102d56102d03660046132a5565b610ef3565b60405190151581526020015b60405180910390f35b3480156102f657600080fd5b506102d56103053660046132a5565b610f48565b34801561031657600080fd5b50465b6040519081526020016102e1565b34801561033357600080fd5b506102d56103423660046132d1565b610f9a565b34801561035357600080fd5b506103676103623660046132d1565b6110b6565b6040516102e192919061339f565b34801561038157600080fd5b506103956103903660046133ba565b6110ec565b6040516102e191906133dc565b3480156103ae57600080fd5b506103196103bd3660046133ef565b60076020526000908152604090205481565b3480156103db57600080fd5b506102936103ea3660046132a5565b611172565b3480156103fb57600080fd5b5061029361040a3660046133ef565b611327565b6102d561041d366004613451565b61140d565b34801561042e57600080fd5b5061031961043d36600461312a565b600860209081526000928352604080842090915290825290205481565b34801561046657600080fd5b5061029361047536600461352a565b6117d5565b34801561048657600080fd5b5061048f611837565b6040516102e191906135e8565b3480156104a857600080fd5b5061031960055481565b3480156104be57600080fd5b506102936104cd3660046135fb565b61194f565b3480156104de57600080fd5b506102936104ed36600461364b565b611972565b3480156104fe57600080fd5b5061051261050d36600461312a565b611a8e565b6040516102e1929190613740565b34801561052c57600080fd5b5061029361053b3660046133ef565b611cc8565b34801561054c57600080fd5b5061031961055b366004613778565b611d82565b34801561056c57600080fd5b5061029361057b366004613839565b611daf565b34801561058c57600080fd5b5061029361059b3660046132a5565b611f4d565b3480156105ac57600080fd5b506102936105bb366004613872565b6120d4565b3480156105cc57600080fd5b50600454610319565b3480156105e157600080fd5b506103956105f0366004613778565b6123e4565b34801561060157600080fd5b506102936106103660046132a5565b61257d565b34801561062157600080fd5b5061031960007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b34801561068857600080fd5b506102936106973660046138bd565b6125d2565b3480156106a857600080fd5b506103956040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b6106ed61280e565b73ffffffffffffffffffffffffffffffffffffffff821615801590610729575073ffffffffffffffffffffffffffffffffffffffff8216600114155b801561074b575073ffffffffffffffffffffffffffffffffffffffff82163014155b61079c5760405162461bcd60e51b815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602052604090205416156108115760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179093556001835283549091161790915560038054916108a38361392d565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a280600454146108fb576108fb81611327565b5050565b61090a81604161285f565b8251101561095a5760405162461bcd60e51b815260206004820152600560248201527f47533032300000000000000000000000000000000000000000000000000000006044820152606401610793565b6000808060008060005b86811015610ee7576041818102890160208101516040820151919092015160ff16955090935091506000849003610c2857885160208a01208a146109ea5760405162461bcd60e51b815260206004820152600560248201527f47533032370000000000000000000000000000000000000000000000000000006044820152606401610793565b91935083916109fa87604161285f565b821015610a495760405162461bcd60e51b815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401610793565b8751610a5683602061289b565b1115610aa45760405162461bcd60e51b815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401610793565b602082890181015189519091610ac7908390610ac190879061289b565b9061289b565b1115610b155760405162461bcd60e51b815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401610793565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610b71908f908690600401613965565b602060405180830381865afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb2919061398a565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401610793565b5050610e01565b8360ff16600103610cdc5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610c8b575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610cd75760405162461bcd60e51b815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401610793565b610e01565b601e8460ff161115610da1576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610d4191906139cc565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610d90573d6000803e3d6000fd5b505050602060405103519450610e01565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610df4573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610e62575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610e85575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610ed15760405162461bcd60e51b815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401610793565b8495508080610edf9061392d565b915050610964565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff831614801590610f42575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216600114801590610f4257505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b600033600114801590610fd157503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b61101d5760405162461bcd60e51b815260206004820152600560248201527f47533130340000000000000000000000000000000000000000000000000000006044820152606401610793565b61104a858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b905080156110825760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a26110ae565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b600060606110c686868686610f9a565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006110fb8360206139e5565b67ffffffffffffffff81111561111357611113613156565b6040519080825280601f01601f19166020018201604052801561113d576020820181803683370190505b50905060005b8381101561116a5784810154602080830284010152806111628161392d565b915050611143565b509392505050565b61117a61280e565b73ffffffffffffffffffffffffffffffffffffffff8116158015906111b6575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112025760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416156112775760405162461bcd60e51b815260206004820152600560248201527f47533130320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff848116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a250565b61132f61280e565b6003548111156113815760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b60018110156113d25760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200160405180910390a150565b60008060006114278e8e8e8e8e8e8e8e8e8e6005546123e4565b6005805491925060006114398361392d565b90915550508051602082012091506114528282866117d5565b50600061147d7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561151d578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016114ea9c9b9a99989796959493929190613a66565b600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050505b61154961152c8a6109c4613b7c565b603f6115398c60406139e5565b6115439190613b8f565b906128fe565b611555906101f4613b7c565b5a10156115a45760405162461bcd60e51b815260206004820152600560248201527f47533031300000000000000000000000000000000000000000000000000000006044820152606401610793565b60005a90506116158f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611602578e6128b7565b6109c45a6116109190613bca565b6128b7565b93506116225a8290612915565b9050838061162f57508915155b8061163957508715155b6116855760405162461bcd60e51b815260206004820152600560248201527f47533031330000000000000000000000000000000000000000000000000000006044820152606401610793565b6000881561169d5761169a828b8b8b8b612930565b90505b84156116e257837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040516116d591815260200190565b60405180910390a261171d565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d238260405161171491815260200190565b60405180910390a25b505073ffffffffffffffffffffffffffffffffffffffff8116156117c4576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b600454806118255760405162461bcd60e51b815260206004820152600560248201527f47533030310000000000000000000000000000000000000000000000000000006044820152606401610793565b611831848484846108ff565b50505050565b6060600060035467ffffffffffffffff81111561185657611856613156565b60405190808252806020026020018201604052801561187f578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff811660011461194757808383815181106118fa576118fa613bdd565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920181019190915291811660009081526002909252604090912054168161193f8161392d565b9250506118c9565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b6119b08a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612a8d915050565b73ffffffffffffffffffffffffffffffffffffffff8416156119d5576119d584612dd8565b611a158787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e6192505050565b8115611a2c57611a2a82600060018685612930565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611a7a959493929190613c0c565b60405180910390a250505050505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff841660011480611abb5750611abb84610ef3565b611b075760405162461bcd60e51b815260206004820152600560248201527f47533130350000000000000000000000000000000000000000000000000000006044820152606401610793565b60008311611b575760405162461bcd60e51b815260206004820152600560248201527f47533130360000000000000000000000000000000000000000000000000000006044820152606401610793565b8267ffffffffffffffff811115611b7057611b70613156565b604051908082528060200260200182016040528015611b99578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040812054929450911691505b73ffffffffffffffffffffffffffffffffffffffff821615801590611c05575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015611c1057508381105b15611c785781838281518110611c2857611c28613bdd565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260019093526040909220549091169080611c708161392d565b915050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8216600114611cbd5782611ca2600183613bca565b81518110611cb257611cb2613bdd565b602002602001015191505b808352509250929050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d3a5760405162461bcd60e51b815260206004820152600560248201527f47533033300000000000000000000000000000000000000000000000000000006044820152606401610793565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611d978c8c8c8c8c8c8c8c8c8c8c6123e4565b8051906020012090509b9a5050505050505050505050565b611db761280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590611df3575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611e3f5760405162461bcd60e51b815260206004820152600560248201527f47533130310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614611eb85760405162461bcd60e51b815260206004820152600560248201527f47533130330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff818116600081815260016020526040808220805487861684528284208054919096167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179095558383528054909416909355915190917faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691a25050565b611f5561280e565b73ffffffffffffffffffffffffffffffffffffffff81161561206b576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613c92565b61206b5760405162461bcd60e51b815260206004820152600560248201527f47533330300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff8316907f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290600090a25050565b6120dc61280e565b73ffffffffffffffffffffffffffffffffffffffff811615801590612118575073ffffffffffffffffffffffffffffffffffffffff8116600114155b801561213a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6121865760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156121fb5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612237575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6122835760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146122fc5760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805486861680855283852080549288167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790559589168452828420805482169096179095558383528054909416909355915190917ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf91a260405173ffffffffffffffffffffffffffffffffffffffff8216907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a2505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161241e929190613cb4565b604051908190038120612444949392918e908e908e908e908e908e908e90602001613cc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061251860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b61258561280e565b61258e81612dd8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b090600090a250565b6125da61280e565b8060016003546125ea9190613bca565b10156126385760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff821615801590612674575073ffffffffffffffffffffffffffffffffffffffff8216600114155b6126c05760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146127395760405162461bcd60e51b815260206004820152600560248201527f47533230350000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909455918152825490911690915560038054916127b183613d41565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8316907ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf90600090a280600454146128095761280981611327565b505050565b33301461285d5760405162461bcd60e51b815260206004820152600560248201527f47533033310000000000000000000000000000000000000000000000000000006044820152606401610793565b565b60008260000361287157506000610f42565b600061287d83856139e5565b90508261288a8583613b8f565b1461289457600080fd5b9392505050565b6000806128a88385613b7c565b90508381101561289457600080fd5b600060018360018111156128cd576128cd6139fc565b036128e5576000808551602087018986f490506128f5565b600080855160208701888a87f190505b95945050505050565b60008183101561290e5781612894565b5090919050565b60008282111561292457600080fd5b60006110ae8385613bca565b60008073ffffffffffffffffffffffffffffffffffffffff8316156129555782612957565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612a1c576129963a8610612984573a612986565b855b612990898961289b565b9061285f565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612a175760405162461bcd60e51b815260206004820152600560248201527f47533031310000000000000000000000000000000000000000000000000000006044820152606401610793565b612a83565b612a2a85612990898961289b565b9150612a3784828461302b565b612a835760405162461bcd60e51b815260206004820152600560248201527f47533031320000000000000000000000000000000000000000000000000000006044820152606401610793565b5095945050505050565b60045415612add5760405162461bcd60e51b815260206004820152600560248201527f47533230300000000000000000000000000000000000000000000000000000006044820152606401610793565b8151811115612b2e5760405162461bcd60e51b815260206004820152600560248201527f47533230310000000000000000000000000000000000000000000000000000006044820152606401610793565b6001811015612b7f5760405162461bcd60e51b815260206004820152600560248201527f47533230320000000000000000000000000000000000000000000000000000006044820152606401610793565b600160005b8351811015612d80576000848281518110612ba157612ba1613bdd565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612bff575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612c21575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612c5957508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ca55760405162461bcd60e51b815260206004820152600560248201527f47533230330000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612d1a5760405162461bcd60e51b815260206004820152600560248201527f47533230340000000000000000000000000000000000000000000000000000006044820152606401610793565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612d788161392d565b915050612b84565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b3073ffffffffffffffffffffffffffffffffffffffff821603612e3d5760405162461bcd60e51b815260206004820152600560248201527f47533430300000000000000000000000000000000000000000000000000000006044820152606401610793565b7f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff1615612ef05760405162461bcd60e51b815260206004820152600560248201527f47533130300000000000000000000000000000000000000000000000000000006044820152606401610793565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff8216156108fb57813b612fb05760405162461bcd60e51b815260206004820152600560248201527f47533030320000000000000000000000000000000000000000000000000000006044820152606401610793565b612fdf8260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b7565b6108fb5760405162461bcd60e51b815260206004820152600560248201527f47533030300000000000000000000000000000000000000000000000000000006044820152606401610793565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d80156130d857602081146130e057600093506130eb565b8193506130eb565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461311757600080fd5b50565b8035613125816130f5565b919050565b6000806040838503121561313d57600080fd5b8235613148816130f5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261319657600080fd5b813567ffffffffffffffff808211156131b1576131b1613156565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156131f7576131f7613156565b8160405283815286602085880101111561321057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561324657600080fd5b84359350602085013567ffffffffffffffff8082111561326557600080fd5b61327188838901613185565b9450604087013591508082111561328757600080fd5b5061329487828801613185565b949793965093946060013593505050565b6000602082840312156132b757600080fd5b8135612894816130f5565b80356002811061312557600080fd5b600080600080608085870312156132e757600080fd5b84356132f2816130f5565b935060208501359250604085013567ffffffffffffffff81111561331557600080fd5b61332187828801613185565b925050613330606086016132c2565b905092959194509250565b6000815180845260005b8181101561336157602081850181015186830182015201613345565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b82151581526040602082015260006110ae604083018461333b565b600080604083850312156133cd57600080fd5b50508035926020909101359150565b602081526000612894602083018461333b565b60006020828403121561340157600080fd5b5035919050565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b60208301915083602082850101111561344a57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e03121561347357600080fd5b61347c8c61311a565b9a5060208c0135995067ffffffffffffffff8060408e0135111561349f57600080fd5b6134af8e60408f01358f01613408565b909a5098506134c060608e016132c2565b975060808d0135965060a08d0135955060c08d013594506134e360e08e0161311a565b93506134f26101008e0161311a565b9250806101208e0135111561350657600080fd5b506135188d6101208e01358e01613185565b90509295989b509295989b9093969950565b60008060006060848603121561353f57600080fd5b83359250602084013567ffffffffffffffff8082111561355e57600080fd5b61356a87838801613185565b9350604086013591508082111561358057600080fd5b5061358d86828701613185565b9150509250925092565b600081518084526020808501945080840160005b838110156135dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ab565b509495945050505050565b6020815260006128946020830184613597565b6000806040838503121561360e57600080fd5b8235613619816130f5565b9150602083013567ffffffffffffffff81111561363557600080fd5b61364185828601613185565b9150509250929050565b6000806000806000806000806000806101008b8d03121561366b57600080fd5b8a3567ffffffffffffffff8082111561368357600080fd5b818d0191508d601f83011261369757600080fd5b8135818111156136a657600080fd5b8e60208260051b85010111156136bb57600080fd5b60208381019d50909b508d013599506136d660408e0161311a565b985060608d01359150808211156136ec57600080fd5b506136f98d828e01613408565b909750955061370c905060808c0161311a565b935061371a60a08c0161311a565b925060c08b0135915061372f60e08c0161311a565b90509295989b9194979a5092959850565b6040815260006137536040830185613597565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060008060008060008060008060006101408c8e03121561379a57600080fd5b8b356137a5816130f5565b9a5060208c0135995060408c013567ffffffffffffffff8111156137c857600080fd5b6137d48e828f01613408565b909a5098506137e7905060608d016132c2565b965060808c0135955060a08c0135945060c08c0135935060e08c013561380c816130f5565b92506101008c013561381d816130f5565b809250506101208c013590509295989b509295989b9093969950565b6000806040838503121561384c57600080fd5b8235613857816130f5565b91506020830135613867816130f5565b809150509250929050565b60008060006060848603121561388757600080fd5b8335613892816130f5565b925060208401356138a2816130f5565b915060408401356138b2816130f5565b809150509250925092565b6000806000606084860312156138d257600080fd5b83356138dd816130f5565b925060208401356138ed816130f5565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361395e5761395e6138fe565b5060010190565b604081526000613978604083018561333b565b82810360208401526128f5818561333b565b60006020828403121561399c57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461289457600080fd5b60ff8281168282160390811115610f4257610f426138fe565b8082028115828204841417610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061016073ffffffffffffffffffffffffffffffffffffffff8f1683528d60208401528060408401528b81840152506101808b8d828501376000818d850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8d01168301613adc606085018d613a2b565b8a60808501528960a08501528860c0850152613b1060e085018973ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff87166101008501528184820301610120850152613b448282018761333b565b92505050613b6b61014083018473ffffffffffffffffffffffffffffffffffffffff169052565b9d9c50505050505050505050505050565b80820180821115610f4257610f426138fe565b600082613bc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610f4257610f426138fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6080808252810185905260008660a08301825b88811015613c5c578235613c32816130f5565b73ffffffffffffffffffffffffffffffffffffffff16825260209283019290910190600101613c1f565b506020840196909652505073ffffffffffffffffffffffffffffffffffffffff9283166040820152911660609091015292915050565b600060208284031215613ca457600080fd5b8151801515811461289457600080fd5b8183823760009101908152919050565b6000610160820190508c825273ffffffffffffffffffffffffffffffffffffffff808d1660208401528b60408401528a6060840152613d06608084018b613a2b565b60a083019890985260c082019690965260e0810194909452918516610100840152909316610120820152610140019190915295945050505050565b600081613d5057613d506138fe565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220a82e74315eba8186cf86441aec2560b7e388befadbfd580ca98abf223daa05f864736f6c63430008130033608060405234801561001057600080fd5b50610959806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806353e5d9351161005057806353e5d935146100b7578063d18af54d146100cc578063ec9e80bb146100df57600080fd5b80631688f0b91461006c5780633408e470146100a9575b600080fd5b61007f61007a3660046105d2565b6100f2565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6040514681526020016100a0565b6100bf610194565b6040516100a09190610699565b61007f6100da3660046106b3565b6101dc565b61007f6100ed3660046105d2565b6102f8565b600080838051906020012083604051602001610118929190918252602082015260400190565b60405160208183030381529060405280519060200120905061013b85858361032a565b60405173ffffffffffffffffffffffffffffffffffffffff8781168252919350908316907f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359060200160405180910390a2509392505050565b6060604051806020016101a6906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052919050565b600080838360405160200161022092919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060001c90506102468686836100f2565b915073ffffffffffffffffffffffffffffffffffffffff8316156102ef576040517f1e52b51800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690631e52b518906102bc9085908a908a908a9060040161071f565b600060405180830381600087803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b505050505b50949350505050565b60008083805190602001208361030b4690565b6040805160208101949094528301919091526060820152608001610118565b6000833b610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640060448201526064015b60405180910390fd5b6000604051806020016103ab906104c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052610403919073ffffffffffffffffffffffffffffffffffffffff881690602001610769565b6040516020818303038152906040529050828151826020016000f5915073ffffffffffffffffffffffffffffffffffffffff821661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f437265617465322063616c6c206661696c6564000000000000000000000000006044820152606401610390565b8351156104be5760008060008651602088016000875af1036104be57600080fd5b509392505050565b6101988061078c83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146104f557600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261053857600080fd5b813567ffffffffffffffff80821115610553576105536104f8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610599576105996104f8565b816040528381528660208588010111156105b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156105e757600080fd5b83356105f2816104d3565b9250602084013567ffffffffffffffff81111561060e57600080fd5b61061a86828701610527565b925050604084013590509250925092565b60005b8381101561064657818101518382015260200161062e565b50506000910152565b6000815180845261066781602086016020860161062b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106ac602083018461064f565b9392505050565b600080600080608085870312156106c957600080fd5b84356106d4816104d3565b9350602085013567ffffffffffffffff8111156106f057600080fd5b6106fc87828801610527565b935050604085013591506060850135610714816104d3565b939692955090935050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610758608083018561064f565b905082606083015295945050505050565b6000835161077b81846020880161062b565b919091019182525060200191905056fe608060405234801561001057600080fd5b5060405161019838038061019883398101604081905261002f916100b9565b6001600160a01b0381166100945760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b606482015260840160405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100e9565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b60a1806100f76000396000f3fe6080604052600073ffffffffffffffffffffffffffffffffffffffff8154167fa619486e00000000000000000000000000000000000000000000000000000000823503604d57808252602082f35b3682833781823684845af490503d82833e806066573d82fd5b503d81f3fea2646970667358221220c9b8d205889a06b8a781df821d99f7eb9c4f9e75e02d12e7db7aeff7715b14ff64736f6c63430008130033a26469706673582212203dd4da9d4485a6cc44deec51e612d47a72de39031c72943e67884964b1490cf564736f6c63430008130033608060405234801561001057600080fd5b50611148806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c80632303164011610081578063bc197c811161005b578063bc197c8114610212578063bd61951d1461024d578063f23a6e611461026057600080fd5b806323031640146101ca5780636ac24784146101ea578063b2494df3146101fd57600080fd5b8063150b7a02116100b2578063150b7a021461013b5780631626ba7e146101a457806320c13b0b146101b757600080fd5b806223de29146100d857806301ffc9a7146100f25780630a1028c41461011a575b600080fd5b6100f06100e6366004610955565b5050505050505050565b005b610105610100366004610a34565b610299565b60405190151581526020015b60405180910390f35b61012d610128366004610b5d565b61037e565b604051908152602001610111565b610173610149366004610b9a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610111565b6101736101b2366004610c0d565b61038a565b6101736101c5366004610c59565b6104ab565b6101dd6101d8366004610cbd565b610680565b6040516101119190610d67565b61012d6101f8366004610cbd565b6107b7565b6102056107d2565b6040516101119190610d7a565b610173610220366004610e19565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6101dd61025b366004610eb7565b610884565b61017361026e366004610ef3565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061032c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061037857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061037833836107b7565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916103ea9189908990604401610f6f565b602060405180830381865afa158015610407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042b9190610fd3565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b000000000000000000000000000000000000000000000000000000001461047d57600061049f565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b600033816104b98286610680565b805160208201208551919250906000036105ce576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ff0565b6000036105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640160405180910390fd5b610655565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061062490849086908a90600401611009565b60006040518083038186803b15801561063c57600080fd5b505afa158015610650573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016106ca929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190610ff0565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60006107c38383610680565b80519060200120905092915050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015610836573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261087c919081019061104e565b509392505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516104a457805160208201fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461090957600080fd5b50565b60008083601f84011261091e57600080fd5b50813567ffffffffffffffff81111561093657600080fd5b60208301915083602082850101111561094e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561097157600080fd5b883561097c816108e7565b9750602089013561098c816108e7565b9650604089013561099c816108e7565b955060608901359450608089013567ffffffffffffffff808211156109c057600080fd5b6109cc8c838d0161090c565b909650945060a08b01359150808211156109e557600080fd5b506109f28b828c0161090c565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461090957600080fd5b600060208284031215610a4657600080fd5b81356104a481610a06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ac757610ac7610a51565b604052919050565b600082601f830112610ae057600080fd5b813567ffffffffffffffff811115610afa57610afa610a51565b610b2b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610a80565b818152846020838601011115610b4057600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610b6f57600080fd5b813567ffffffffffffffff811115610b8657600080fd5b610b9284828501610acf565b949350505050565b600080600080600060808688031215610bb257600080fd5b8535610bbd816108e7565b94506020860135610bcd816108e7565b935060408601359250606086013567ffffffffffffffff811115610bf057600080fd5b610bfc8882890161090c565b969995985093965092949392505050565b600080600060408486031215610c2257600080fd5b83359250602084013567ffffffffffffffff811115610c4057600080fd5b610c4c8682870161090c565b9497909650939450505050565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610acf565b93506020850135915080821115610ca657600080fd5b50610cb385828601610acf565b9150509250929050565b60008060408385031215610cd057600080fd5b8235610cdb816108e7565b9150602083013567ffffffffffffffff811115610cf757600080fd5b610cb385828601610acf565b6000815180845260005b81811015610d2957602081850181015186830182015201610d0d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104a46020830184610d03565b6020808252825182820181905260009190848201906040850190845b81811015610dc857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d96565b50909695505050505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b6020830191508360208260051b850101111561094e57600080fd5b60008060008060008060008060a0898b031215610e3557600080fd5b8835610e40816108e7565b97506020890135610e50816108e7565b9650604089013567ffffffffffffffff80821115610e6d57600080fd5b610e798c838d01610dd4565b909850965060608b0135915080821115610e9257600080fd5b610e9e8c838d01610dd4565b909650945060808b01359150808211156109e557600080fd5b600080600060408486031215610ecc57600080fd5b8335610ed7816108e7565b9250602084013567ffffffffffffffff811115610c4057600080fd5b60008060008060008060a08789031215610f0c57600080fd5b8635610f17816108e7565b95506020870135610f27816108e7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610f5157600080fd5b610f5d89828a0161090c565b979a9699509497509295939492505050565b604081526000610f826040830186610d03565b82810360208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050949350505050565b600060208284031215610fe557600080fd5b81516104a481610a06565b60006020828403121561100257600080fd5b5051919050565b8381526060602082015260006110226060830185610d03565b82810360408401526110348185610d03565b9695505050505050565b8051611049816108e7565b919050565b6000806040838503121561106157600080fd5b825167ffffffffffffffff8082111561107957600080fd5b818501915085601f83011261108d57600080fd5b81516020828211156110a1576110a1610a51565b8160051b92506110b2818401610a80565b82815292840181019281810190898511156110cc57600080fd5b948201945b848610156110f657855193506110e6846108e7565b83825294820194908201906110d1565b9650611105905087820161103e565b945050505050925092905056fea2646970667358221220cbe4129d67c9c8d839896cbbe15f6e40fdb8d658732d3aac9d709f7698efa72664736f6c63430008130033608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a060405234801561001057600080fd5b50306080526080516102bd61002f6000396000604f01526102bd6000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100366100313660046101b8565b610038565b005b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642060448201527f7669612064656c656761746563616c6c00000000000000000000000000000000606482015260840160405180910390fd5b805160205b81811015610184578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461014b576001811461015b57610166565b6000808585888a5af19150610166565b6000808585895af491505b508061017157600080fd5b5050806055018501945050505050610106565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156101ca57600080fd5b813567ffffffffffffffff808211156101e257600080fd5b818401915084601f8301126101f657600080fd5b81358181111561020857610208610189565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561024e5761024e610189565b8160405282815287602084870101111561026757600080fd5b82602086016020830137600092810160200192909252509594505050505056fea264697066735822122032adbeac7246a82e8cf804d2cddeb100f2f681cef088468f53d46b083ae936ab64736f6c63430008130033608060405234801561001057600080fd5b50610450806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630a1028c41461003b57806385a5affe14610060575b600080fd5b61004e6100493660046102c0565b610075565b60405190815260200160405180910390f35b61007361006e36600461038f565b61020e565b005b6000807f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020016100be929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207ff698da2500000000000000000000000000000000000000000000000000000000845291519193507f1900000000000000000000000000000000000000000000000000000000000000927f010000000000000000000000000000000000000000000000000000000000000092309263f698da2592600480820193918290030181865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610401565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405280519060200120915050919050565b600061024f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061007592505050565b600081815260076020526040808220600190555191925082917fe7f4675038f4f6034dfcbbb24c4dc08e4ebf10eb9d257d3d02c0f38d122ac6e49190a2505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102d257600080fd5b813567ffffffffffffffff808211156102ea57600080fd5b818401915084601f8301126102fe57600080fd5b81358181111561031057610310610291565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561035657610356610291565b8160405282815287602084870101111561036f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080602083850312156103a257600080fd5b823567ffffffffffffffff808211156103ba57600080fd5b818501915085601f8301126103ce57600080fd5b8135818111156103dd57600080fd5b8660208285010111156103ef57600080fd5b60209290920196919550909350505050565b60006020828403121561041357600080fd5b505191905056fea26469706673582212206003de0b8d0248e6331c5b2696aa2ec6a49c2865d42b111a25360b09a685586064736f6c63430008130033a26469706673582212207daa45fe40e65ab83905f328e715174032e0ea8b1cae8f884fff2cb7f2ee362364736f6c63430008130033","sourceMap":"1341:2731:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1836:26;;;;;;;;;;;;209:42:122;197:55;;;179:74;;167:2;152:18;1836:26:81;;;;;;;;1578:32;;;;;;;;;1616:22;;;;;;;;;1789:41;;;;;;;;;1676:21;;;;;;;;;1911:893;;;:::i;:::-;;1703:31;;;;;;;;;1740:43;;;;;;;;;1868:36;;;;;;;;;758:28:28;;;;;;;;;;;;2354:14:122;;2347:22;2329:41;;2317:2;2302:18;758:28:28;2189:187:122;1553:19:81;;;;;;;;;;;;1911:893;1974:25;;;;;2971:2:122;1974:25:81;;;2953:21:122;3010:2;2990:18;;;2983:30;3049:13;3029:18;;;3022:41;1945:26:81;;1974:10;;;;3080:18:122;;1974:25:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2009:37;;;;;;;;3444:25:122;;;1945:54:81;;-1:-1:-1;2009:17:81;;;;3417:18:122;;2009:37:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2245:27:81;;;;;;;;3444:25:122;;;2222:51:81;;-1:-1:-1;2245:7:81;;-1:-1:-1;2245:7:81;;3417:18:122;;2245:27:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2222:22;:51::i;:::-;2326:17;:15;:17::i;:::-;2410:27;;;;;;;;3444:25:122;;;2381:15:81;;2399:39;;2410:7;;;;3417:18:122;;2410:27:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2399:10;:39::i;:::-;2542:10;;2516:38;;2381:57;;-1:-1:-1;2486:27:81;;2542:10;;;;;2516:38;;;:::i;:::-;209:42:122;197:55;;;179:74;;167:2;152:18;2516:38:81;;;;;;;;;;;;;;;;;;;;;;;2486:68;;2573:13;2564:23;;;;;:::i;:::-;209:42:122;197:55;;;179:74;;167:2;152:18;2564:23:81;;;;;;;;;;;;;;;;;;;;;;;;2597:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2626:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2661;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;317:28:27;309:37;;2697:16:81;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2726:27;;;;;;;;;;;;;;;;;;:11;:27::i;:::-;2763:34;2790:5;2763:18;:34::i;:::-;1935:869;;;1911:893::o;3445:625::-;3524:21;;;;;;;;;;;;;;;;;;:8;:21::i;:::-;3509:5;;:37;;;;;;;;;;;;;;;;;;3598;3638:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3681:32:81;;;;;:27;197:55:122;;;3681:32:81;;;179:74:122;3598:73:81;;-1:-1:-1;3681:27:81;;;;;;152:18:122;;3681:32:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3842:9;3853:5;;;;;;;;;;;3823:36;;;;;:::i;:::-;4384:42:122;4453:15;;;4435:34;;4505:15;;4500:2;4485:18;;4478:43;4362:2;4347:18;3823:36:81;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3810:10:81;:49;;;;;;;;;;;;;;3970:25;;;;;;;;:23;;:25;;;;;;;;;;;;;;;3810:49;3970:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3952:7;:44;;;;;;;;;;;4039:24;;;;;197:55:122;;;4039:24:81;;;179:74:122;4039:19:81;;;;;;152:18:122;;4039:24:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3499:571;3445:625;:::o;3061:378::-;3151:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3139:9:81;:22;;;;;;;;;;;;;;;3181;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:7:81;:32;;;;;;;;;;;;;;;3223:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3213:7:81;:44;;;;;;;;;;;;;;;3317:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3306:8:81;:42;;;;;;;;;;;;;;;3370:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3358:9:81;:27;;;;;;;;;;;;;;;3412:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3395:14:81;:37;;;;;;;;;;;;;;;3061:378::o;2810:245::-;2916:16;;;2930:1;2916:16;;;;;;;;;2863:15;;;;2916:16;;;;;;;;;;;;-1:-1:-1;2916:16:81;2890:42;;2954:5;2942:6;2949:1;2942:9;;;;;;;;:::i;:::-;:17;;;;:9;;;;;;;;;:17;2996:7;;3005:9;;3035:8;;2977:71;;2996:7;;;;3005:9;;;;3016:6;;2996:7;;3035:8;2996:7;2977:18;:71::i;:::-;2969:79;2810:245;-1:-1:-1;;;2810:245:81:o;5630:121:41:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5685:15;:59::i;:::-;5630:121;:::o;1154:123::-;1226:43;;209:42:122;197:55;;1226:43:41;;;179:74:122;1210:60:41;;152:18:122;;1226:43:41;;;;;;;;;;;;;;;;;;;;;;;;1210:15;:60::i;15314:125:31:-;15378:12;15412:20;15427:4;15412:14;:20::i;:::-;-1:-1:-1;15402:30:31;15314:125;-1:-1:-1;;15314:125:31:o;953:558:119:-;1163:9;1214:7;:28;;;1268:9;1340:19;;;1361:6;1369:9;1388:1;1396:7;1413:1;1417;1428;1296:152;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1214:280;;;;;;;;;;;;;1466:5;;1214:280;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1184:320;953:558;-1:-1:-1;;;;;;;953:558:119:o;181:376:41:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;15033:242:31:-;15103:12;15117:18;15195:4;15178:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;15168:33;;15178:22;15168:33;;;;15219:19;;;;;;3444:25:122;;;15168:33:31;-1:-1:-1;15219:7:31;;;;3417:18:122;;15219:19:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15248:20;;;;;15212:26;;-1:-1:-1;15248:8:31;;;;:20;;15212:26;;15263:4;;15248:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:242;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;3109:184:122:-;3179:6;3232:2;3220:9;3211:7;3207:23;3203:32;3200:52;;;3248:1;3245;3238:12;3200:52;-1:-1:-1;3271:16:122;;3109:184;-1:-1:-1;3109:184:122:o;3480:154::-;3566:42;3559:5;3555:54;3548:5;3545:65;3535:93;;3624:1;3621;3614:12;3639:251;3709:6;3762:2;3750:9;3741:7;3737:23;3733:32;3730:52;;;3778:1;3775;3768:12;3730:52;3810:9;3804:16;3829:31;3854:5;3829:31;:::i;5002:184::-;5054:77;5051:1;5044:88;5151:4;5148:1;5141:15;5175:4;5172:1;5165:15;5191:250;5276:1;5286:113;5300:6;5297:1;5294:13;5286:113;;;5376:11;;;5370:18;5357:11;;;5350:39;5322:2;5315:10;5286:113;;;-1:-1:-1;;5433:1:122;5415:16;;5408:27;5191:250::o;5446:330::-;5488:3;5526:5;5520:12;5553:6;5548:3;5541:19;5569:76;5638:6;5631:4;5626:3;5622:14;5615:4;5608:5;5604:16;5569:76;:::i;:::-;5690:2;5678:15;5695:66;5674:88;5665:98;;;;5765:4;5661:109;;5446:330;-1:-1:-1;;5446:330:122:o;5781:220::-;5930:2;5919:9;5912:21;5893:4;5950:45;5991:2;5980:9;5976:18;5968:6;5950:45;:::i;6092:1400::-;6538:3;6591:21;;;6661:13;;6564:18;;;6683:22;;;6509:4;;6736:3;6721:19;;;6759:4;;6786:15;;;6509:4;6829:218;6843:6;6840:1;6837:13;6829:218;;;6908:13;;6923:42;6904:62;6892:75;;6987:12;;;;7022:15;;;;6865:1;6858:9;6829:218;;;-1:-1:-1;;;7063:18:122;;7056:34;;;;-1:-1:-1;603:42:122;592:54;;;7141:2;7126:18;;580:67;7181:19;;;7176:2;7161:18;;7154:47;-1:-1:-1;2706:14:122;;592:54;;;7309:3;7294:19;;580:67;592:54;;;7365:3;7350:19;;580:67;6079:4;6068:16;7425:3;7410:19;;6056:29;592:54;;;7481:3;7466:19;;;580:67;2753:4;2744:14;;6092:1400;-1:-1:-1;6092:1400:122:o;7497:409::-;7712:42;7704:6;7700:55;7689:9;7682:74;7792:2;7787;7776:9;7772:18;7765:30;7663:4;7812:45;7853:2;7842:9;7838:18;7830:6;7812:45;:::i;:::-;7804:53;;7893:6;7888:2;7877:9;7873:18;7866:34;7497:409;;;;;;:::o;8186:289::-;8317:3;8355:6;8349:13;8371:66;8430:6;8425:3;8418:4;8410:6;8406:17;8371:66;:::i;:::-;8453:16;;;;;8186:289;-1:-1:-1;;8186:289:122:o;8480:340::-;8669:42;8661:6;8657:55;8646:9;8639:74;8749:2;8744;8733:9;8729:18;8722:30;8620:4;8769:45;8810:2;8799:9;8795:18;8787:6;8769:45;:::i;:::-;8761:53;8480:340;-1:-1:-1;;;;8480:340:122:o","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","eHandler()":"9fbcc9ad","factory()":"c45a0155","handler()":"c80916d4","multisend()":"294402cc","relayer()":"8406c079","run()":"c0406226","settlement()":"51160630","signMessageLib()":"dfe274a9","singleton()":"b62654fb","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eHandler\",\"outputs\":[{\"internalType\":\"contract ExtensibleFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract SafeProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"handler\",\"outputs\":[{\"internalType\":\"contract CompatibilityFallbackHandler\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multisend\",\"outputs\":[{\"internalType\":\"contract MultiSend\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement\",\"outputs\":[{\"internalType\":\"contract GPv2Settlement\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signMessageLib\",\"outputs\":[{\"internalType\":\"contract SignMessageLib\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"singleton\",\"outputs\":[{\"internalType\":\"contract Safe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/deploy_AnvilStack.s.sol\":\"DeployAnvilStack\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol\":{\"keccak256\":\"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a\",\"dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W\"]},\"lib/cowprotocol/src/contracts/GPv2Settlement.sol\":{\"keccak256\":\"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e\",\"dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S\"]},\"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol\":{\"keccak256\":\"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba\",\"dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol\":{\"keccak256\":\"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd\",\"dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD\"]},\"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol\":{\"keccak256\":\"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4\",\"dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a\",\"dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol\":{\"keccak256\":\"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a\",\"dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol\":{\"keccak256\":\"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96\",\"dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol\":{\"keccak256\":\"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f\",\"dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol\":{\"keccak256\":\"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1\",\"dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x\"]},\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]},\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]},\"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol\":{\"keccak256\":\"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290\",\"dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV\"]},\"lib/cowprotocol/src/contracts/mixins/Initializable.sol\":{\"keccak256\":\"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39\",\"dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB\"]},\"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol\":{\"keccak256\":\"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146\",\"dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g\"]},\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"script/deploy_AnvilStack.s.sol\":{\"keccak256\":\"0x98a664d2b4e82d878dcd2731aa6703705a306eb37a8af928cc111402821076f5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7f3f628475b04ba6e79d3d61cf623e2feac2af93b896a466bbb1f34f671899a8\",\"dweb:/ipfs/Qma4AxmjWkiUMWQ9H2dUDjm7fGQefLkDZAJZoCt2iRPZ9A\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/PerpetualStableSwap.sol\":{\"keccak256\":\"0xed5f911d46ffa3e463f247978cd8d67110461cf36aa51658141dcc5130e90cb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96f6fa29716bae22b73dd858ab031a34a67ecae4cd9262e501b1096921a463e0\",\"dweb:/ipfs/QmZgsii972eu4S16CfvQh8rvJttT22YeTv5VkKrQB3jZQR\"]},\"src/types/TradeAboveThreshold.sol\":{\"keccak256\":\"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b\",\"dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eHandler","outputs":[{"internalType":"contract ExtensibleFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"contract SafeProxyFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"handler","outputs":[{"internalType":"contract CompatibilityFallbackHandler","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"multisend","outputs":[{"internalType":"contract MultiSend","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"relayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"},{"inputs":[],"stateMutability":"view","type":"function","name":"settlement","outputs":[{"internalType":"contract GPv2Settlement","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"signMessageLib","outputs":[{"internalType":"contract SignMessageLib","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"singleton","outputs":[{"internalType":"contract Safe","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/deploy_AnvilStack.s.sol":"DeployAnvilStack"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/GPv2AllowListAuthentication.sol":{"keccak256":"0x568427c57ce23d92c3f43fbb72f34cf5006ac1242ef811d0302cd6890d5eb448","urls":["bzz-raw://4b22e976848fb11e45cb01fe6fecb0d9c2e3da09f3666e71135cfa8ac8f0a64a","dweb:/ipfs/QmbD8EUVQ7wgX4SAmYq1fzS2SxvTb1NhbbkFxahePFgc3W"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2Settlement.sol":{"keccak256":"0x3eb7e2bbcbe9c244324ea3bc962d584b011b4e18b208e83f1859b4479fdfb182","urls":["bzz-raw://4e94f95fae641f240db7352bf53acf095a48ddda838055ec665fce29cb575c9e","dweb:/ipfs/QmZtAhuhbqVKSuxJ74wn4mXz2vq1t7N3KCiigZTscUxz1S"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/GPv2VaultRelayer.sol":{"keccak256":"0x31a5e6f5492617f4ab4f92b47c34c57124d1f629c28c471592e5fb7e6399dd9b","urls":["bzz-raw://f763bbbac5d873367a8d53df14e4704ea8d3035af3ab575f77a504c44573fdba","dweb:/ipfs/QmVYMkoNA8i6CCQqbyfrhc5jPuz1JH4hzsWakrCyGtLRHW"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2Authentication.sol":{"keccak256":"0x5d7aa0a9ed46dab8b3b95a95f6ece8709eba8b058a9ab5f248da06a659acecb1","urls":["bzz-raw://1ca78a537f927489c5097c9901bacce53745d78f3efc47d418a9c662de4660cd","dweb:/ipfs/QmedJbsJ8S5ovrVRoEBQraLWmu9WxxYLPAJKDVYj6aPJVD"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/GPv2EIP1271.sol":{"keccak256":"0x980bddd301af4e9ee0fff5bd84a0bd12d7a359be4f5abda0f1c99e607e445b1c","urls":["bzz-raw://d50e341790048037515c9f471a48bad1598c04bc846eaf84b40bb5cabcfbe2d4","dweb:/ipfs/QmfJR7MVkgN5yEzsTSHe3RVtRfanoTkdS8m1ensCnMX7oM"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IVault.sol":{"keccak256":"0x438c78286c8448302972b38ac26c175ba1402b523e81b3c58ef1a902bac0a0ed","urls":["bzz-raw://12f16e5d690f6cff7c7e198592aa7514ed66ade3b9ab319f95ff930cb389aa1a","dweb:/ipfs/QmUgQVDo4Lj4tba7twCy5SXpCT1kyxbBYhBdagbBqRMezc"],"license":"GPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2EIP1967.sol":{"keccak256":"0x1fa228b7e425a531c3a22982f809ddb1807dd6812d637c85a6b8cd3177896bcc","urls":["bzz-raw://88d70c7add26313f029c775b8c5b291473052b4a4bd576e10408946f13668d1a","dweb:/ipfs/QmXXiApoU2SjpKZbSXBMHYiemfjiwXTFPs5QdZfwCA6ZmZ"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2SafeERC20.sol":{"keccak256":"0x3c156de3e1710d184847cf9b919e766caba9edc879b29b67f3de60c5144b73d6","urls":["bzz-raw://2d84c0b020ab3105c630b23d998f3cd6e6f028ebf8015f89d29a3d7aa6677f96","dweb:/ipfs/QmbuaSHRRrwznWhrymU7nx8wzEAC6C8HUKofaTEjQML9kw"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Trade.sol":{"keccak256":"0xdfd7efab95dc63adcfc09ac18181e02fcec50051e9c53d6789cfab1ee0a280b9","urls":["bzz-raw://42364d6e91d86b33b1efc67e4cbcf6bf79e3fc6ed669700c68bfc51c6189f81f","dweb:/ipfs/QmRo4phfSFWc6nL9TEkvZ7EKHvkgJ2h8sfhSa6UXAekvQF"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Transfer.sol":{"keccak256":"0xe961ebb1e57eab2cbe83650660741ffff4f494ba0a7effdf6e8637cc76ec8a8e","urls":["bzz-raw://d9d779b3ad983a6e599d2aac76ee09aa7049c9420fa81ea41e9657e957f81ff1","dweb:/ipfs/Qma7MHLXvDZRzSMXGKLjTYbRkVYRdqqFYruKMciE3CWd5x"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/GPv2Signing.sol":{"keccak256":"0x9034debeaf3d46e2fc026ade2e40b56140b7f63b6870371b381c886c679232cb","urls":["bzz-raw://cf9096d052f176ecc1326d346c1993bf921f5f440eb830c8febfaf535ab3f290","dweb:/ipfs/QmeGmu7E3xXr3x3BsMX9iHma5hoJvXxomx2J3GQBp8ANMV"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/mixins/Initializable.sol":{"keccak256":"0xab11dad416217a7515e1634fa04904a4d32d10e6584e25b2e962b3f6b8a5abed","urls":["bzz-raw://31976212e1bb300bfe6efd18aef1749deb53885d9e7ae0c2c7e680ef96381d39","dweb:/ipfs/QmfBixsQthmXCXH1zaYiYBBkXre5iGy7vP4T2e731HrgNB"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/ReentrancyGuard.sol":{"keccak256":"0x35c029266e8cb2e2d522d3e37cc2660bfb433708cf832382c94c8a286160abe5","urls":["bzz-raw://6e7b2e00d8ce5ccfae5a421785efb7370407846ce0e618c304eefdca5a7f7146","dweb:/ipfs/QmPGBheUjYnSumMYYq6wigGF5k9Cu9ZUozNaBAwKYAM28g"],"license":"MIT"},"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"script/deploy_AnvilStack.s.sol":{"keccak256":"0x98a664d2b4e82d878dcd2731aa6703705a306eb37a8af928cc111402821076f5","urls":["bzz-raw://7f3f628475b04ba6e79d3d61cf623e2feac2af93b896a466bbb1f34f671899a8","dweb:/ipfs/Qma4AxmjWkiUMWQ9H2dUDjm7fGQefLkDZAJZoCt2iRPZ9A"],"license":"GPL-3.0"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/PerpetualStableSwap.sol":{"keccak256":"0xed5f911d46ffa3e463f247978cd8d67110461cf36aa51658141dcc5130e90cb4","urls":["bzz-raw://96f6fa29716bae22b73dd858ab031a34a67ecae4cd9262e501b1096921a463e0","dweb:/ipfs/QmZgsii972eu4S16CfvQh8rvJttT22YeTv5VkKrQB3jZQR"],"license":"MIT"},"src/types/TradeAboveThreshold.sol":{"keccak256":"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7","urls":["bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b","dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA"],"license":"MIT"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"}},"version":1},"id":81} \ No newline at end of file diff --git a/out/deploy_ComposableCoW.s.sol/DeployComposableCoW.json b/out/deploy_ComposableCoW.s.sol/DeployComposableCoW.json new file mode 100644 index 0000000..0bf79fa --- /dev/null +++ b/out/deploy_ComposableCoW.s.sol/DeployComposableCoW.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b506127468061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610340565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f534554544c454d454e54000000000000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa1580156101bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e39190610359565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b505050508060405161027190610333565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156102aa573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031757600080fd5b505af115801561032b573d6000803e3d6000fd5b505050505050565b61237a8061039783390190565b60006020828403121561035257600080fd5b5051919050565b60006020828403121561036b57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461038f57600080fd5b939250505056fe60a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033a264697066735822122096cd9e1f327651e46a6358f6fe99dc98de8579bb46949100bb450fae501049cf64736f6c63430008130033","sourceMap":"172:316:82:-:0;;;3288:44:30;;;3328:4;-1:-1:-1;;3288:44:30;;;;;;;;758:28:28;;;;;;;;;;;172:316:82;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610340565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f534554544c454d454e54000000000000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa1580156101bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e39190610359565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b505050508060405161027190610333565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156102aa573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031757600080fd5b505af115801561032b573d6000803e3d6000fd5b505050505050565b61237a8061039783390190565b60006020828403121561035257600080fd5b5051919050565b60006020828403121561036b57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461038f57600080fd5b939250505056fe60a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c63430008130033a264697066735822122096cd9e1f327651e46a6358f6fe99dc98de8579bb46949100bb450fae501049cf64736f6c63430008130033","sourceMap":"172:316:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:269;;;:::i;:::-;;758:28:28;;;;;;;;;;;;179:14:122;;172:22;154:41;;142:2;127:18;758:28:28;;;;;;;217:269:82;280:25;;;;;408:2:122;280:25:82;;;390:21:122;447:2;427:18;;;420:30;486:13;466:18;;;459:41;251:26:82;;280:10;;;;517:18:122;;280:25:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;336:27;;;;;937:2:122;336:27:82;;;919:21:122;976:2;956:18;;;949:30;1015:12;995:18;;;988:40;251:54:82;;-1:-1:-1;315:18:82;;336:13;;;;1045:18:122;;336:27:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:37;;;;;;;;1538:25:122;;;315:48:82;;-1:-1:-1;373:17:82;;;;1511:18:122;;373:37:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;439:10;421:29;;;;;:::i;:::-;1750:42:122;1738:55;;;1720:74;;1708:2;1693:18;421:29:82;;;;;;;;;;;;;;;;;;;;;;;;317:28:27;309:37;;461:16:82;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;241:245;;217:269::o;-1:-1:-1:-;;;;;;;;:::o;546:184:122:-;616:6;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;-1:-1:-1;708:16:122;;546:184;-1:-1:-1;546:184:122:o;1074:313::-;1144:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:52;;;1213:1;1210;1203:12;1165:52;1245:9;1239:16;1295:42;1288:5;1284:54;1277:5;1274:65;1264:93;;1353:1;1350;1343:12;1264:93;1376:5;1074:313;-1:-1:-1;;;1074:313:122:o","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/deploy_ComposableCoW.s.sol\":\"DeployComposableCoW\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"script/deploy_ComposableCoW.s.sol\":{\"keccak256\":\"0x4a411c9e8679dfad199bf4f68002c6e6a6dceeae0dd90aef8e139d2d0dd22c50\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://27401e2c7d076b1250c2065a7a086462c392adb531a579a37757009395bbe3d7\",\"dweb:/ipfs/QmeuQ78feM5KZs276WPbD9DDV679SpDMRpzXsw8cTc1RTZ\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/deploy_ComposableCoW.s.sol":"DeployComposableCoW"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"script/deploy_ComposableCoW.s.sol":{"keccak256":"0x4a411c9e8679dfad199bf4f68002c6e6a6dceeae0dd90aef8e139d2d0dd22c50","urls":["bzz-raw://27401e2c7d076b1250c2065a7a086462c392adb531a579a37757009395bbe3d7","dweb:/ipfs/QmeuQ78feM5KZs276WPbD9DDV679SpDMRpzXsw8cTc1RTZ"],"license":"GPL-3.0"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"}},"version":1},"id":82} \ No newline at end of file diff --git a/out/deploy_ExtensibleFallbackHandler.s.sol/DeployExtensibleFallbackHandler.json b/out/deploy_ExtensibleFallbackHandler.s.sol/DeployExtensibleFallbackHandler.json new file mode 100644 index 0000000..5e225ec --- /dev/null +++ b/out/deploy_ExtensibleFallbackHandler.s.sol/DeployExtensibleFallbackHandler.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b5061279b8061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610261565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561018c57600080fd5b505af11580156101a0573d6000803e3d6000fd5b505050506040516101b090610254565b604051809103906000f0801580156101cc573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050565b6124eb8061027b83390190565b60006020828403121561027357600080fd5b505191905056fe608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c63430008130033a2646970667358221220090c57ce673ee75a4eeb579b8bc368ed707936d8c221e221e2d1dced78ab7b7e64736f6c63430008130033","sourceMap":"202:272:83:-:0;;;3288:44:30;;;3328:4;-1:-1:-1;;3288:44:30;;;;;;;;758:28:28;;;;;;;;;;;202:272:83;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610261565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561018c57600080fd5b505af11580156101a0573d6000803e3d6000fd5b505050506040516101b090610254565b604051809103906000f0801580156101cc573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050565b6124eb8061027b83390190565b60006020828403121561027357600080fd5b505191905056fe608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c63430008130033a2646970667358221220090c57ce673ee75a4eeb579b8bc368ed707936d8c221e221e2d1dced78ab7b7e64736f6c63430008130033","sourceMap":"202:272:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:213;;;:::i;:::-;;758:28:28;;;;;;;;;;;;179:14:124;;172:22;154:41;;142:2;127:18;758:28:28;;;;;;;259:213:83;322:25;;;;;408:2:124;322:25:83;;;390:21:124;447:2;427:18;;;420:30;486:13;466:18;;;459:41;293:26:83;;322:10;;;;517:18:124;;322:25:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;357:37;;;;;;;;881:25:124;;;293:54:83;;-1:-1:-1;357:17:83;;;;854:18:124;;357:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;317:28:27;309:37;;447:16:83;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;283:189;259:213::o;-1:-1:-1:-;;;;;;;;:::o;546:184:124:-;616:6;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;-1:-1:-1;708:16:124;;546:184;-1:-1:-1;546:184:124:o","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/deploy_ExtensibleFallbackHandler.s.sol\":\"DeployExtensibleFallbackHandler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"script/deploy_ExtensibleFallbackHandler.s.sol\":{\"keccak256\":\"0x24fe557b5201febaef58eca2d24ab6345e8a6bb9fe1adea6b2ee8ca36746934a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c1482fdd2ef8967059d7ad2b4bff06be3a88ad8f6e521d05e004fb8bc996ec3b\",\"dweb:/ipfs/QmXwg9w2kRd6W3goyy3MpUZfUoPxp1mU3eYsNnpZnDNmD2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/deploy_ExtensibleFallbackHandler.s.sol":"DeployExtensibleFallbackHandler"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"script/deploy_ExtensibleFallbackHandler.s.sol":{"keccak256":"0x24fe557b5201febaef58eca2d24ab6345e8a6bb9fe1adea6b2ee8ca36746934a","urls":["bzz-raw://c1482fdd2ef8967059d7ad2b4bff06be3a88ad8f6e521d05e004fb8bc996ec3b","dweb:/ipfs/QmXwg9w2kRd6W3goyy3MpUZfUoPxp1mU3eYsNnpZnDNmD2"],"license":"GPL-3.0"}},"version":1},"id":83} \ No newline at end of file diff --git a/out/deploy_OrderTypes.s.sol/DeployOrderTypes.json b/out/deploy_OrderTypes.s.sol/DeployOrderTypes.json new file mode 100644 index 0000000..f0eedef --- /dev/null +++ b/out/deploy_OrderTypes.s.sol/DeployOrderTypes.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b506141118061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012391906103e5565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4d504f5341424c455f434f570000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa1580156101bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e391906103fe565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b5050505080604051610271906103b1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156102aa573d6000803e3d6000fd5b50506040516102b8906103be565b604051809103906000f0801580156102d4573d6000803e3d6000fd5b50506040516102e2906103cb565b604051809103906000f0801580156102fe573d6000803e3d6000fd5b505060405161030c906103d8565b604051809103906000f080158015610328573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b505050505050565b6112468061043c83390190565b610fe98061168283390190565b610fa28061266b83390190565b610acf8061360d83390190565b6000602082840312156103f757600080fd5b5051919050565b60006020828403121561041057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461043457600080fd5b939250505056fe60a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610f82806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610858565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461090f565b61013c565b005b6100966100913660046109fd565b610259565b6040516100659190610a9c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610c0f565b905060006102d48a83610475565b9050600081604001511161034757604080518082018252600a81527f6e6f742066756e64656400000000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200182604001518152602001826060015181526020016103d184604001516106f0565b63ffffffff16815260200183608001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152815160208301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908416906370a0823190602401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190610cbd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918416906370a0823190602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190610cbd565b9050806105d8858486610712565b11156106645760405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001612710886060015161271061063c9190610d05565b610647888789610712565b6106519190610d18565b61065b9190610d5e565b905294506106e6565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815260200161271088606001516127106106c29190610d05565b6106cd87868a610712565b6106d79190610d18565b6106e19190610d5e565b905294505b5050505092915050565b600081806106fe8142610d72565b6107089190610d95565b6101369190610dbd565b6000808473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107849190610de1565b905060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610de1565b90508060ff168260ff16111561082d576108118183610e04565b61081c90600a610f3d565b6108269086610d5e565b925061084f565b6108378282610e04565b61084290600a610f3d565b61084c9086610d18565b92505b50509392505050565b60006020828403121561086a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461089a57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108c357600080fd5b50565b60008083601f8401126108d857600080fd5b50813567ffffffffffffffff8111156108f057600080fd5b60208301915083602082850101111561090857600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561092f57600080fd5b6109398b356108a1565b8a35995060208b013561094b816108a1565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561097d57600080fd5b6109898e838f016108c6565b909750955060c08d01359150808211156109a257600080fd5b506109af8d828e016108c6565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156109e857600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a1857600080fd5b8735610a23816108a1565b96506020880135610a33816108a1565b955060408801359450606088013567ffffffffffffffff80821115610a5757600080fd5b610a638b838c016108c6565b909650945060808a0135915080821115610a7c57600080fd5b50610a898a828b016108c6565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610ae2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b0a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b3660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610b6b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bb757858101830151858201604001528201610b9b565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff81168114610c0a57600080fd5b919050565b600060a08284031215610c2157600080fd5b60405160a0810181811067ffffffffffffffff82111715610c6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610c79816108a1565b81526020830135610c89816108a1565b6020820152610c9a60408401610bf6565b604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215610ccf57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561013657610136610cd6565b808202811582820484141761013657610136610cd6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610d6d57610d6d610d2f565b500490565b600063ffffffff80841680610d8957610d89610d2f565b92169190910492915050565b63ffffffff818116838216028082169190828114610db557610db5610cd6565b505092915050565b63ffffffff818116838216019080821115610dda57610dda610cd6565b5092915050565b600060208284031215610df357600080fd5b815160ff8116811461089a57600080fd5b60ff828116828216039081111561013657610136610cd6565b600181815b80851115610e7657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e5c57610e5c610cd6565b80851615610e6957918102915b93841c9390800290610e22565b509250929050565b600082610e8d57506001610136565b81610e9a57506000610136565b8160018114610eb05760028114610eba57610ed6565b6001915050610136565b60ff841115610ecb57610ecb610cd6565b50506001821b610136565b5060208310610133831016604e8410600b8410161715610ef9575081810a610136565b610f038383610e1d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f3557610f35610cd6565b029392505050565b600061089a60ff841683610e7e56fea2646970667358221220ef97e33348ec9642e162f19ce668c9f7fb155d488f8a668360ab608034107eb764736f6c63430008130033608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c63430008130033a26469706673582212204fc41c61f06ba311e0453f3529d63c53a2364364adbde7ce17f471734188761664736f6c63430008130033","sourceMap":"432:428:83:-:0;;;3288:44:30;;;3328:4;-1:-1:-1;;3288:44:30;;;;;;;;758:28:28;;;;;;;;;;;432:428:83;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012391906103e5565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4d504f5341424c455f434f570000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa1580156101bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e391906103fe565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b5050505080604051610271906103b1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156102aa573d6000803e3d6000fd5b50506040516102b8906103be565b604051809103906000f0801580156102d4573d6000803e3d6000fd5b50506040516102e2906103cb565b604051809103906000f0801580156102fe573d6000803e3d6000fd5b505060405161030c906103d8565b604051809103906000f080158015610328573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b505050505050565b6112468061043c83390190565b610fe98061168283390190565b610fa28061266b83390190565b610acf8061360d83390190565b6000602082840312156103f757600080fd5b5051919050565b60006020828403121561041057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461043457600080fd5b939250505056fe60a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610f82806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610858565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461090f565b61013c565b005b6100966100913660046109fd565b610259565b6040516100659190610a9c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610c0f565b905060006102d48a83610475565b9050600081604001511161034757604080518082018252600a81527f6e6f742066756e64656400000000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200182604001518152602001826060015181526020016103d184604001516106f0565b63ffffffff16815260200183608001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152815160208301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908416906370a0823190602401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190610cbd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918416906370a0823190602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190610cbd565b9050806105d8858486610712565b11156106645760405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001612710886060015161271061063c9190610d05565b610647888789610712565b6106519190610d18565b61065b9190610d5e565b905294506106e6565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815260200161271088606001516127106106c29190610d05565b6106cd87868a610712565b6106d79190610d18565b6106e19190610d5e565b905294505b5050505092915050565b600081806106fe8142610d72565b6107089190610d95565b6101369190610dbd565b6000808473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107849190610de1565b905060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610de1565b90508060ff168260ff16111561082d576108118183610e04565b61081c90600a610f3d565b6108269086610d5e565b925061084f565b6108378282610e04565b61084290600a610f3d565b61084c9086610d18565b92505b50509392505050565b60006020828403121561086a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461089a57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108c357600080fd5b50565b60008083601f8401126108d857600080fd5b50813567ffffffffffffffff8111156108f057600080fd5b60208301915083602082850101111561090857600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561092f57600080fd5b6109398b356108a1565b8a35995060208b013561094b816108a1565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561097d57600080fd5b6109898e838f016108c6565b909750955060c08d01359150808211156109a257600080fd5b506109af8d828e016108c6565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156109e857600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a1857600080fd5b8735610a23816108a1565b96506020880135610a33816108a1565b955060408801359450606088013567ffffffffffffffff80821115610a5757600080fd5b610a638b838c016108c6565b909650945060808a0135915080821115610a7c57600080fd5b50610a898a828b016108c6565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610ae2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b0a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b3660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610b6b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bb757858101830151858201604001528201610b9b565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff81168114610c0a57600080fd5b919050565b600060a08284031215610c2157600080fd5b60405160a0810181811067ffffffffffffffff82111715610c6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610c79816108a1565b81526020830135610c89816108a1565b6020820152610c9a60408401610bf6565b604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215610ccf57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561013657610136610cd6565b808202811582820484141761013657610136610cd6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610d6d57610d6d610d2f565b500490565b600063ffffffff80841680610d8957610d89610d2f565b92169190910492915050565b63ffffffff818116838216028082169190828114610db557610db5610cd6565b505092915050565b63ffffffff818116838216019080821115610dda57610dda610cd6565b5092915050565b600060208284031215610df357600080fd5b815160ff8116811461089a57600080fd5b60ff828116828216039081111561013657610136610cd6565b600181815b80851115610e7657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e5c57610e5c610cd6565b80851615610e6957918102915b93841c9390800290610e22565b509250929050565b600082610e8d57506001610136565b81610e9a57506000610136565b8160018114610eb05760028114610eba57610ed6565b6001915050610136565b60ff841115610ecb57610ecb610cd6565b50506001821b610136565b5060208310610133831016604e8410600b8410161715610ef9575081810a610136565b610f038383610e1d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f3557610f35610cd6565b029392505050565b600061089a60ff841683610e7e56fea2646970667358221220ef97e33348ec9642e162f19ce668c9f7fb155d488f8a668360ab608034107eb764736f6c63430008130033608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c63430008130033a26469706673582212204fc41c61f06ba311e0453f3529d63c53a2364364adbde7ce17f471734188761664736f6c63430008130033","sourceMap":"432:428:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;474:384;;;:::i;:::-;;758:28:28;;;;;;;;;;;;179:14:122;;172:22;154:41;;142:2;127:18;758:28:28;;;;;;;474:384:83;537:25;;;;;408:2:122;537:25:83;;;390:21:122;447:2;427:18;;;420:30;486:13;466:18;;;459:41;508:26:83;;537:10;;;;517:18:122;;537:25:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;596:31;;;;;937:2:122;596:31:83;;;919:21:122;976:2;956:18;;;949:30;1015:16;995:18;;;988:44;508:54:83;;-1:-1:-1;572:21:83;;596:13;;;;1049:18:122;;596:31:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;637:37;;;;;;;;1542:25:122;;;572:55:83;;-1:-1:-1;637:17:83;;;;1515:18:122;;637:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:13;685:38;;;;;:::i;:::-;1777:42:122;1765:55;;;1747:74;;1735:2;1720:18;685:38:83;;;;;;;;;;;;;;;;;;;;;;;;733:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;762:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;797;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;317:28:27;309:37;;833:16:83;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:360;;474:384::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;546:184:122:-;616:6;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;-1:-1:-1;708:16:122;;546:184;-1:-1:-1;546:184:122:o;1078:313::-;1148:6;1201:2;1189:9;1180:7;1176:23;1172:32;1169:52;;;1217:1;1214;1207:12;1169:52;1249:9;1243:16;1299:42;1292:5;1288:54;1281:5;1278:65;1268:93;;1357:1;1354;1347:12;1268:93;1380:5;1078:313;-1:-1:-1;;;1078:313:122:o","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/deploy_OrderTypes.s.sol\":\"DeployOrderTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"script/deploy_OrderTypes.s.sol\":{\"keccak256\":\"0xbd76d919e1740859d15a329d851a4e0021f082f78a04e3e0c2af0942b3e13c58\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f9488721178857ff4e5ad1721734043f982342361d9e625167bbdff5a49e453a\",\"dweb:/ipfs/QmQLGjQ95XnVbZuYWMqsTGdUFYQcDpybFV19xpUyS68VXo\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/PerpetualStableSwap.sol\":{\"keccak256\":\"0xed5f911d46ffa3e463f247978cd8d67110461cf36aa51658141dcc5130e90cb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96f6fa29716bae22b73dd858ab031a34a67ecae4cd9262e501b1096921a463e0\",\"dweb:/ipfs/QmZgsii972eu4S16CfvQh8rvJttT22YeTv5VkKrQB3jZQR\"]},\"src/types/TradeAboveThreshold.sol\":{\"keccak256\":\"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b\",\"dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/deploy_OrderTypes.s.sol":"DeployOrderTypes"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"script/deploy_OrderTypes.s.sol":{"keccak256":"0xbd76d919e1740859d15a329d851a4e0021f082f78a04e3e0c2af0942b3e13c58","urls":["bzz-raw://f9488721178857ff4e5ad1721734043f982342361d9e625167bbdff5a49e453a","dweb:/ipfs/QmQLGjQ95XnVbZuYWMqsTGdUFYQcDpybFV19xpUyS68VXo"],"license":"GPL-3.0"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/PerpetualStableSwap.sol":{"keccak256":"0xed5f911d46ffa3e463f247978cd8d67110461cf36aa51658141dcc5130e90cb4","urls":["bzz-raw://96f6fa29716bae22b73dd858ab031a34a67ecae4cd9262e501b1096921a463e0","dweb:/ipfs/QmZgsii972eu4S16CfvQh8rvJttT22YeTv5VkKrQB3jZQR"],"license":"MIT"},"src/types/TradeAboveThreshold.sol":{"keccak256":"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7","urls":["bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b","dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA"],"license":"MIT"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file diff --git a/out/deploy_ProdStack.s.sol/DeployProdStack.json b/out/deploy_ProdStack.s.sol/DeployProdStack.json new file mode 100644 index 0000000..10cf375 --- /dev/null +++ b/out/deploy_ProdStack.s.sol/DeployProdStack.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b50619cef8061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610588565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f534554544c454d454e54000000000000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa1580156101bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e391906105a1565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b505050507f76312e302e30000000000000000000000000000000000000000000000000000060405161029190610520565b8190604051809103906000f59050801580156102b1573d6000803e3d6000fd5b505060007f76312e302e300000000000000000000000000000000000000000000000000000826040516102e39061052d565b73ffffffffffffffffffffffffffffffffffffffff90911681526020018190604051809103906000f5905080158015610320573d6000803e3d6000fd5b5090507f76312e302e300000000000000000000000000000000000000000000000000000816040516103519061053a565b73ffffffffffffffffffffffffffffffffffffffff90911681526020018190604051809103906000f590508015801561038e573d6000803e3d6000fd5b50507f76312e302e3000000000000000000000000000000000000000000000000000006040516103bd90610547565b8190604051809103906000f59050801580156103dd573d6000803e3d6000fd5b50507f76312e302e30000000000000000000000000000000000000000000000000000060405161040c90610554565b8190604051809103906000f590508015801561042c573d6000803e3d6000fd5b50507f76312e302e30000000000000000000000000000000000000000000000000000060405161045b90610561565b8190604051809103906000f590508015801561047b573d6000803e3d6000fd5b50507f76312e302e3000000000000000000000000000000000000000000000000000006040516104aa9061056e565b8190604051809103906000f59050801580156104ca573d6000803e3d6000fd5b50507f76312e302e3000000000000000000000000000000000000000000000000000006040516104f99061057b565b8190604051809103906000f5905080158015610519573d6000803e3d6000fd5b5050505050565b6124eb806105df83390190565b61237a80612aca83390190565b61124680614e4483390190565b610fe98061608a83390190565b610fa28061707383390190565b610acf8061801583390190565b6110c380618ae483390190565b61011380619ba783390190565b60006020828403121561059a57600080fd5b5051919050565b6000602082840312156105b357600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146105d757600080fd5b939250505056fe608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610f82806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610858565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461090f565b61013c565b005b6100966100913660046109fd565b610259565b6040516100659190610a9c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610c0f565b905060006102d48a83610475565b9050600081604001511161034757604080518082018252600a81527f6e6f742066756e64656400000000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200182604001518152602001826060015181526020016103d184604001516106f0565b63ffffffff16815260200183608001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152815160208301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908416906370a0823190602401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190610cbd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918416906370a0823190602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190610cbd565b9050806105d8858486610712565b11156106645760405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001612710886060015161271061063c9190610d05565b610647888789610712565b6106519190610d18565b61065b9190610d5e565b905294506106e6565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815260200161271088606001516127106106c29190610d05565b6106cd87868a610712565b6106d79190610d18565b6106e19190610d5e565b905294505b5050505092915050565b600081806106fe8142610d72565b6107089190610d95565b6101369190610dbd565b6000808473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107849190610de1565b905060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610de1565b90508060ff168260ff16111561082d576108118183610e04565b61081c90600a610f3d565b6108269086610d5e565b925061084f565b6108378282610e04565b61084290600a610f3d565b61084c9086610d18565b92505b50509392505050565b60006020828403121561086a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461089a57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108c357600080fd5b50565b60008083601f8401126108d857600080fd5b50813567ffffffffffffffff8111156108f057600080fd5b60208301915083602082850101111561090857600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561092f57600080fd5b6109398b356108a1565b8a35995060208b013561094b816108a1565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561097d57600080fd5b6109898e838f016108c6565b909750955060c08d01359150808211156109a257600080fd5b506109af8d828e016108c6565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156109e857600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a1857600080fd5b8735610a23816108a1565b96506020880135610a33816108a1565b955060408801359450606088013567ffffffffffffffff80821115610a5757600080fd5b610a638b838c016108c6565b909650945060808a0135915080821115610a7c57600080fd5b50610a898a828b016108c6565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610ae2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b0a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b3660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610b6b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bb757858101830151858201604001528201610b9b565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff81168114610c0a57600080fd5b919050565b600060a08284031215610c2157600080fd5b60405160a0810181811067ffffffffffffffff82111715610c6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610c79816108a1565b81526020830135610c89816108a1565b6020820152610c9a60408401610bf6565b604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215610ccf57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561013657610136610cd6565b808202811582820484141761013657610136610cd6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610d6d57610d6d610d2f565b500490565b600063ffffffff80841680610d8957610d89610d2f565b92169190910492915050565b63ffffffff818116838216028082169190828114610db557610db5610cd6565b505092915050565b63ffffffff818116838216019080821115610dda57610dda610cd6565b5092915050565b600060208284031215610df357600080fd5b815160ff8116811461089a57600080fd5b60ff828116828216039081111561013657610136610cd6565b600181815b80851115610e7657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e5c57610e5c610cd6565b80851615610e6957918102915b93841c9390800290610e22565b509250929050565b600082610e8d57506001610136565b81610e9a57506000610136565b8160018114610eb05760028114610eba57610ed6565b6001915050610136565b60ff841115610ecb57610ecb610cd6565b50506001821b610136565b5060208310610133831016604e8410600b8410161715610ef9575081810a610136565b610f038383610e1d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f3557610f35610cd6565b029392505050565b600061089a60ff841683610e7e56fea2646970667358221220ef97e33348ec9642e162f19ce668c9f7fb155d488f8a668360ab608034107eb764736f6c63430008130033608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c63430008130033608060405234801561001057600080fd5b506110a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610885565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610945565b61013c565b005b610096610091366004610a33565b610259565b6040516100659190610ad2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610ca1565b90504281610100015163ffffffff16101561034057604080518082018252600d81527f6f72646572206578706972656400000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60008082610120015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b79190610d98565b5093505092505060008084610140015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104359190610d98565b5093505092505060008413801561044c5750600082135b6104b557604080518082018252601481527f6f7261636c6520696e76616c6964207072696365000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6101808501516104c59042610e17565b83101580156104e357506101808501516104df9042610e17565b8110155b61054c57604080518082018252601281527f6f7261636c65207374616c652070726963650000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6105cb8486610120015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c49190610e2a565b6012610812565b93506106218286610140015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b6101608601519092508261063d670de0b6b3a764000087610e4d565b6106479190610e99565b13156106b257604080518082018252601281527f737472696b65206e6f7420726561636865640000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b50505050604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001826040015181526020018260600151815260200182610100015163ffffffff16815260200182608001518152602001600081526020018260c00151610787577f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc6107a9565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467755b81526020018260e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9815250915050979650505050505050565b60008160ff168360ff16101561084b5761082c8383610f28565b61083a9060ff16600a611061565b6108449085610e4d565b905061087e565b8160ff168360ff16111561087b576108638284610f28565b6108719060ff16600a611061565b6108449085610e99565b50825b9392505050565b60006020828403121561089757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461087e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108e957600080fd5b50565b80356108f7816108c7565b919050565b60008083601f84011261090e57600080fd5b50813567ffffffffffffffff81111561092657600080fd5b60208301915083602082850101111561093e57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561096557600080fd5b61096f8b356108c7565b8a35995060208b0135610981816108c7565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156109b357600080fd5b6109bf8e838f016108fc565b909750955060c08d01359150808211156109d857600080fd5b506109e58d828e016108fc565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610a1e57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a4e57600080fd5b8735610a59816108c7565b96506020880135610a69816108c7565b955060408801359450606088013567ffffffffffffffff80821115610a8d57600080fd5b610a998b838c016108fc565b909650945060808a0135915080821115610ab257600080fd5b50610abf8a828b016108fc565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610b18602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b40604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b6c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610ba18285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bed57858101830151858201604001528201610bd1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6040516101a0810167ffffffffffffffff81118282101715610c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803580151581146108f757600080fd5b803563ffffffff811681146108f757600080fd5b60006101a08284031215610cb457600080fd5b610cbc610c2c565b610cc5836108ec565b8152610cd3602084016108ec565b6020820152604083013560408201526060830135606082015260808301356080820152610d0260a084016108ec565b60a0820152610d1360c08401610c7d565b60c0820152610d2460e08401610c7d565b60e0820152610100610d37818501610c8d565b90820152610120610d498482016108ec565b90820152610140610d5b8482016108ec565b908201526101608381013590820152610180928301359281019290925250919050565b805169ffffffffffffffffffff811681146108f757600080fd5b600080600080600060a08688031215610db057600080fd5b610db986610d7e565b9450602086015193506040860151925060608601519150610ddc60808701610d7e565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610de8565b600060208284031215610e3c57600080fd5b815160ff8116811461087e57600080fd5b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615610e8557610e85610de8565b818105831482151761013657610136610de8565b600082610ecf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610f2357610f23610de8565b500590565b60ff828116828216039081111561013657610136610de8565b600181815b80851115610f9a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f8057610f80610de8565b80851615610f8d57918102915b93841c9390800290610f46565b509250929050565b600082610fb157506001610136565b81610fbe57506000610136565b8160018114610fd45760028114610fde57610ffa565b6001915050610136565b60ff841115610fef57610fef610de8565b50506001821b610136565b5060208310610133831016604e8410600b841016171561101d575081810a610136565b6110278383610f41565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105957611059610de8565b029392505050565b600061087e8383610fa256fea26469706673582212209b320a2b5454b0ecefde7c01c2b8ff316ef7bd8175de6191fe74ea73da2d6d4064736f6c63430008130033608060405234801561001057600080fd5b5060f48061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603f60383660046051565b4292915050565b60405190815260200160405180910390f35b60008060208385031215606357600080fd5b823567ffffffffffffffff80821115607a57600080fd5b818501915085601f830112608d57600080fd5b813581811115609b57600080fd5b86602082850101111560ac57600080fd5b6020929092019691955090935050505056fea2646970667358221220ab263683a024250b9359febe188378c982b794bc2b7730ab221465e360593e4e64736f6c63430008130033a26469706673582212206f3e7037b9e3496e72279dd45ce58e030435448baa6efda96a3209900352a45664736f6c63430008130033","sourceMap":"771:826:84:-:0;;;3288:44:30;;;3328:4;-1:-1:-1;;3288:44:30;;;;;;;;758:28:28;;;;;;;;;;;771:826:84;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610588565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f534554544c454d454e54000000000000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa1580156101bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e391906105a1565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101849052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b505050507f76312e302e30000000000000000000000000000000000000000000000000000060405161029190610520565b8190604051809103906000f59050801580156102b1573d6000803e3d6000fd5b505060007f76312e302e300000000000000000000000000000000000000000000000000000826040516102e39061052d565b73ffffffffffffffffffffffffffffffffffffffff90911681526020018190604051809103906000f5905080158015610320573d6000803e3d6000fd5b5090507f76312e302e300000000000000000000000000000000000000000000000000000816040516103519061053a565b73ffffffffffffffffffffffffffffffffffffffff90911681526020018190604051809103906000f590508015801561038e573d6000803e3d6000fd5b50507f76312e302e3000000000000000000000000000000000000000000000000000006040516103bd90610547565b8190604051809103906000f59050801580156103dd573d6000803e3d6000fd5b50507f76312e302e30000000000000000000000000000000000000000000000000000060405161040c90610554565b8190604051809103906000f590508015801561042c573d6000803e3d6000fd5b50507f76312e302e30000000000000000000000000000000000000000000000000000060405161045b90610561565b8190604051809103906000f590508015801561047b573d6000803e3d6000fd5b50507f76312e302e3000000000000000000000000000000000000000000000000000006040516104aa9061056e565b8190604051809103906000f59050801580156104ca573d6000803e3d6000fd5b50507f76312e302e3000000000000000000000000000000000000000000000000000006040516104f99061057b565b8190604051809103906000f5905080158015610519573d6000803e3d6000fd5b5050505050565b6124eb806105df83390190565b61237a80612aca83390190565b61124680614e4483390190565b610fe98061608a83390190565b610fa28061707383390190565b610acf8061801583390190565b6110c380618ae483390190565b61011380619ba783390190565b60006020828403121561059a57600080fd5b5051919050565b6000602082840312156105b357600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146105d757600080fd5b939250505056fe608060405234801561001057600080fd5b506124cb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806351cad5ee1161008c5780637f73528b116100665780637f73528b14610514578063b435a13b14610527578063bc197c8114610555578063f23a6e6114610590576100df565b806351cad5ee1461048857806361f5401b146104ee57806364f95acc14610501576100df565b80631626ba7e116100bd5780631626ba7e1461044d578063327b533c146104605780633365582c14610475576100df565b806301ffc9a7146103865780630a3fe054146103ae578063150b7a02146103e4575b60003660606018821015610154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c6964206d6574686f642073656c6563746f7200000000000000000060448201526064015b60405180910390fd5b6000806000806101626105c9565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff81166101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d6574686f642068616e646c6572206e6f742073657400000000000000000000604482015260640161014b565b81156102b45773ffffffffffffffffffffffffffffffffffffffff81166325d6803f8585600080803661021d601482611bc3565b9261022a93929190611bd6565b6040518663ffffffff1660e01b815260040161024a959493929190611c00565b600060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102ad9190810190611d67565b9450610377565b73ffffffffffffffffffffffffffffffffffffffff81166325d6803f858560008080366102e2601482611bc3565b926102ef93929190611bd6565b6040518663ffffffff1660e01b815260040161030f959493929190611c00565b6000604051808303816000875af115801561032e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103749190810190611d67565b94505b50505050915050805190602001f35b610399610394366004611e14565b610641565b60405190151581526020015b60405180910390f35b6103d66103bc366004611e53565b600060208181529281526040808220909352908152205481565b6040519081526020016103a5565b61041c6103f2366004611ed5565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a5565b61041c61045b366004611f48565b610730565b61047361046e366004611fd9565b610926565b005b610473610483366004612021565b610b11565b6104c9610496366004612046565b600160209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a5565b6104736104fc366004611fd9565b610dc0565b61047361050f366004612072565b610f9c565b610473610522366004612090565b611038565b610399610535366004611e53565b600260209081526000928352604080842090915290825290205460ff1681565b61041c6105633660046120c3565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61041c61059e366004612182565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6000806000806105d7611312565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008435168452909152902054929791965060f883901c1595509190911692509050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f98c8e09700000000000000000000000000000000000000000000000000000000145b806106e357506106e382611323565b8061072a57503360009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b92915050565b600080600061073d611312565b9092509050600484106108d9577fffffffff000000000000000000000000000000000000000000000000000000008535167f5fd7e97d000000000000000000000000000000000000000000000000000000008114801561079e575060448510155b156108d7576000806107b460446004898b611bd6565b8101906107c191906121fe565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526001602090815260408083208684529091529020549294509092501680156108d3576000806108108a6004818e611bd6565b81019061081d9190612271565b9350935050508b61082f8686856114eb565b80519060200120036108d0578273ffffffffffffffffffffffffffffffffffffffff166353f00b1489898f898988886040518863ffffffff1660e01b81526004016108809796959493929190612332565b602060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c1919061239d565b9850505050505050505061091f565b50505b5050505b505b61091a828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159b92505050565b925050505b9392505050565b3361092f611850565b73ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b60006109b6611850565b90506000805b83811015610a70576000806000610a2d8888868181106109de576109de6123ba565b9050602002013560f881901c15917fffffffffffffffffffffff000000000000000000000000000000000000000000600883901b169173ffffffffffffffffffffffffffffffffffffffff1690565b925092509250610a478683610a4286856118e8565b61193b565b8315610a565793811893610a5a565b8194505b5050508080610a68906123e9565b9150506109bc565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856001611038565b5050505050565b33610b1a611850565b73ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610ba1611850565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160209081526040808320888452909152902054919250908116908316158015610bfe575073ffffffffffffffffffffffffffffffffffffffff811615155b15610c905773ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832088845282529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590518681527ff1984d1a49cc75dcbf01cd175870cb7eb9a4fd87b538a87007e4dbb0399b61a991015b60405180910390a2610dba565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600160209081526040808320888452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168583161790558116610d40576040805185815273ffffffffffffffffffffffffffffffffffffffff85811660208301528416917fae938181ed4437a46f12ead84e69947e6d84a1113a49d9c0075d8d35c6ce273c9101610c83565b8173ffffffffffffffffffffffffffffffffffffffff167f06341ac2f62eb79165de8c8b54ab89a8825b12746c2b98e01dff1007837d2ba8858386604051610db19392919092835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a25b50505050565b33610dc9611850565b73ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b6000610e50611850565b90506000805b83811015610f0257610e9083868684818110610e7457610e746123ba565b9050602002016020810190610e899190611e14565b600061193b565b8015610ec657848482818110610ea857610ea86123ba565b9050602002016020810190610ebd9190611e14565b82189150610ef0565b848482818110610ed857610ed86123ba565b9050602002016020810190610eed9190611e14565b91505b80610efa816123e9565b915050610e56565b507fffffffff0000000000000000000000000000000000000000000000000000000081811690861614610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e74657266616365206964206d69736d617463680000000000000000000000604482015260640161014b565b610b0a856000611038565b33610fa5611850565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b61103461102d611850565b838361193b565b5050565b33611041611850565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6f6e6c7920736166652063616e2063616c6c2074686973206d6574686f640000604482015260640161014b565b337fffffffff00000000000000000000000000000000000000000000000000000000838116900361114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420696e74657266616365206964000000000000000000000000604482015260640161014b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845290915290205460ff168280156111ac575080155b1561125b5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519182527f3d5024c13f12fa602dbf52b1979058940c224ebf170c83a4e358725ae50db36d9101610c83565b821580156112665750805b15610dba5773ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527ff159d834f487747c1b3f17e2107743e42e6eecff444d894e511c18943072b29f9101610db1565b33600061131d611850565b90509091565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e0000000000000000000000000000000000000000000000000000000014806113b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f62af8dc200000000000000000000000000000000000000000000000000000000145b8061140257507fffffffff0000000000000000000000000000000000000000000000000000000082167f9937293000000000000000000000000000000000000000000000000000000000145b8061144e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f64f95acc00000000000000000000000000000000000000000000000000000000145b8061149a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b8061072a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001492915050565b6060601960f81b600160f81b85858560405160200161150b929190612421565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020918201207fff00000000000000000000000000000000000000000000000000000000000000958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008061168d8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612447565b60408051602081018890527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040526114eb565b8051602082012084519192509060000361179e576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff871690635ae6bd3790602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190612447565b600003611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f766564000000000000000000000000000000604482015260640161014b565b611825565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063934f3a11906117f490849086908990600401612460565b60006040518083038186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050505b507f1626ba7e0000000000000000000000000000000000000000000000000000000095945050505050565b600060143610156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c69642063616c6c64617461206c656e677468000000000000000000604482015260640161014b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b600082611915577f0100000000000000000000000000000000000000000000000000000000000000611918565b60005b8273ffffffffffffffffffffffffffffffffffffffff161760001b905092915050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452909152902054818316918116821580156119b6575073ffffffffffffffffffffffffffffffffffffffff811615155b15611a465773ffffffffffffffffffffffffffffffffffffffff86166000818152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a1680855290835281842093909355519182527fdba980ab8ee19d95f57ee25cf5a9a7f3d7f950dc6075d5e204fbaaf37e5260aa91015b60405180910390a2611b8c565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152602081815260408083207fffffffff000000000000000000000000000000000000000000000000000000008a16845290915290208590558116611b1057604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810186905273ffffffffffffffffffffffffffffffffffffffff8816917f16072a299c25042299e9bb90f6a7b2ccaa8b8fbbceeaa0512f323de45f9d59eb9101611a39565b604080517fffffffff00000000000000000000000000000000000000000000000000000000871681526020810184905290810185905273ffffffffffffffffffffffffffffffffffffffff8716907fe6e8ad7e5547dc860775f9f0638e195a4751a4cfbb7fd2ab60a52eb6c07082ec9060600160405180910390a25b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072a5761072a611b94565b60008085851115611be657600080fd5b83861115611bf357600080fd5b5050820193919092039150565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf557611cf5611c7f565b604052919050565b600067ffffffffffffffff821115611d1757611d17611c7f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015611d5e578181015183820152602001611d46565b50506000910152565b600060208284031215611d7957600080fd5b815167ffffffffffffffff811115611d9057600080fd5b8201601f81018413611da157600080fd5b8051611db4611daf82611cfd565b611cae565b818152856020838501011115611dc957600080fd5b611dda826020830160208601611d43565b95945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1157600080fd5b50565b600060208284031215611e2657600080fd5b813561091f81611de3565b73ffffffffffffffffffffffffffffffffffffffff81168114611e1157600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e31565b91506020830135611e8181611de3565b809150509250929050565b60008083601f840112611e9e57600080fd5b50813567ffffffffffffffff811115611eb657600080fd5b602083019150836020828501011115611ece57600080fd5b9250929050565b600080600080600060808688031215611eed57600080fd5b8535611ef881611e31565b94506020860135611f0881611e31565b935060408601359250606086013567ffffffffffffffff811115611f2b57600080fd5b611f3788828901611e8c565b969995985093965092949392505050565b600080600060408486031215611f5d57600080fd5b83359250602084013567ffffffffffffffff811115611f7b57600080fd5b611f8786828701611e8c565b9497909650939450505050565b60008083601f840112611fa657600080fd5b50813567ffffffffffffffff811115611fbe57600080fd5b6020830191508360208260051b8501011115611ece57600080fd5b600080600060408486031215611fee57600080fd5b8335611ff981611de3565b9250602084013567ffffffffffffffff81111561201557600080fd5b611f8786828701611f94565b6000806040838503121561203457600080fd5b823591506020830135611e8181611e31565b6000806040838503121561205957600080fd5b823561206481611e31565b946020939093013593505050565b6000806040838503121561208557600080fd5b823561206481611de3565b600080604083850312156120a357600080fd5b82356120ae81611de3565b915060208301358015158114611e8157600080fd5b60008060008060008060008060a0898b0312156120df57600080fd5b88356120ea81611e31565b975060208901356120fa81611e31565b9650604089013567ffffffffffffffff8082111561211757600080fd5b6121238c838d01611f94565b909850965060608b013591508082111561213c57600080fd5b6121488c838d01611f94565b909650945060808b013591508082111561216157600080fd5b5061216e8b828c01611e8c565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561219b57600080fd5b86356121a681611e31565b955060208701356121b681611e31565b94506040870135935060608701359250608087013567ffffffffffffffff8111156121e057600080fd5b6121ec89828a01611e8c565b979a9699509497509295939492505050565b6000806040838503121561221157600080fd5b50508035926020909101359150565b600082601f83011261223157600080fd5b813561223f611daf82611cfd565b81815284602083860101111561225457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561228757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156122ad57600080fd5b6122b988838901612220565b935060608701359150808211156122cf57600080fd5b506122dc87828801612220565b91505092959194509250565b60008151808452612300816020860160208601611d43565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015285606083015284608083015260e060a083015261237d60e08301856122e8565b82810360c084015261238f81856122e8565b9a9950505050505050505050565b6000602082840312156123af57600080fd5b815161091f81611de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361241a5761241a611b94565b5060010190565b82815260008251612439816020850160208701611d43565b919091016020019392505050565b60006020828403121561245957600080fd5b5051919050565b83815260606020820152600061247960608301856122e8565b828103604084015261248b81856122e8565b969550505050505056fea26469706673582212200fe38a0ed89c9492cedf0cd09f19f80136c5169374b60e9dab4e3d6c58e3891b64736f6c6343000813003360a06040523480156200001157600080fd5b506040516200237a3803806200237a8339810160408190526200003491620000a3565b806001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620000d5565b60805250620000ef565b600060208284031215620000b657600080fd5b81516001600160a01b0381168114620000ce57600080fd5b9392505050565b600060208284031215620000e857600080fd5b5051919050565b6080516122686200011260003960008181610391015261099301526122686000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806357f1d41a116100975780638f7984ed116100665780638f7984ed146102f557806395bc267314610308578063a45468761461036c578063f698da251461038c57600080fd5b806357f1d41a14610236578063595001b2146102495780636108c532146102a45780636bfae1ca146102e257600080fd5b806326e0a196116100d357806326e0a196146101605780634a03c69a1461018157806353f00b14146101df5780635500079d1461022357600080fd5b80630d0d9800146100fa5780631ab0dd9d1461010f5780631c7662c814610122575b600080fd5b61010d61010836600461131a565b6103b3565b005b61010d61011d3660046113bf565b610486565b61014d610130366004611411565b600360209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017361016e36600461143d565b6104d6565b60405161015792919061165a565b61019461018f36600461167c565b610b66565b6040516101579190815181526020808301511515908201526040808301519082015260609182015173ffffffffffffffffffffffffffffffffffffffff169181019190915260800190565b6101f26101ed3660046116c2565b610c01565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610157565b61014d610231366004611934565b610d43565b61010d610244366004611971565b610d73565b61027f6102573660046119fa565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610157565b6102d26102b2366004611411565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610157565b61010d6102f0366004611a17565b610e34565b61010d6103033660046119fa565b610f3c565b61010d610316366004611a69565b336000818152600160209081526040808320858452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690559282526003815282822093825292909252812055565b61014d61037a3660046119fa565b60006020819052908152604090205481565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6103bd8582610e34565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063b6576bdf906104119086908690600401611acb565b602060405180830381865afa15801561042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104529190611adf565b3360009081526003602052604081209061046e61023189611af8565b81526020810191909152604001600020555050505050565b3360008181526020819052604090819020849055517f58662f46b4a87d0f96d929b24c37fe25c55d52c0025d0b2bec3936534cc31e57906104ca9085908590611b68565b60405180910390a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260606000610581896105488a611af8565b878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610fc392505050565b905061059060208901896119fa565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fb8296fc400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906301ffc9a790602401602060405180830381865afa925050508015610656575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261065391810190611bb2565b60015b61068c576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806106c3576040517f2c7ca6d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506106d160208901896119fa565b73ffffffffffffffffffffffffffffffffffffffff1663b8296fc48a33846106fc60408e018e611bcf565b8d8d6040518863ffffffff1660e01b81526004016107209796959493929190611c34565b61018060405180830381865afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190611cbd565b92506107b089826107728b611af8565b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611105915050565b6107e6576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f62af8dc200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8a16906301ffc9a790602401602060405180830381865afa9250505080156108aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108a791810190611bb2565b60015b61095a5760408051608060208702808301820190935260608201878152869383928a918a918291908601908490808284376000920191909152505050908252506020016108f68b611af8565b815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610944929190602001611e2a565b6040516020818303038152906040529150610b5a565b80610991576040517f79ac63cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489856040516020016109e49190611e4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608060208b028085018201909352606084018b81529193928392918d918d91829190860190849080828437600092019190915250505090825250602001610a558e611af8565b81526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250604051610aa29190602001611e5b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae094939291602401611e6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5fd7e97d000000000000000000000000000000000000000000000000000000001790529250505b50965096945050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610b9661023183611af8565b815273ffffffffffffffffffffffffffffffffffffffff92831660008181526001602090815260408083208551845282528083205460ff1615158286015283835260038252808320855184528252808320548186015292825260029052205490921660608301525090565b600080610c1083850185611eaa565b90506000610c278c83602001518460000151610fc3565b90506000610c3787890189611fcc565b9050610c4e8d838560200151866040015185611105565b610c84576040517f03fc2a7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001516000015173ffffffffffffffffffffffffffffffffffffffff166314a2a7848e8e8e8e878960200151604001518a60400151896040518963ffffffff1660e01b8152600401610cdf98979695949392919061208a565b60006040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b507f1626ba7e0000000000000000000000000000000000000000000000000000000096505050505050505b9998505050505050505050565b600081604051602001610d5691906120fa565b604051602081830303815290604052805190602001209050919050565b610d7d8585610486565b6040517fb6576bdf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b6576bdf90610dd19085908590600401611acb565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190611adf565b3360009081526003602090815260408083208380529091529020555050505050565b6000610e4360208401846119fa565b73ffffffffffffffffffffffffffffffffffffffff1603610e90576040517fd8f59fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260016020819052604082209091610eaf61023186611af8565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558015610f38573373ffffffffffffffffffffffffffffffffffffffff167f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361836040516104ca919061210d565b5050565b3360008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f41f583e2d25b3921afe66987b63b0b5e4cf2acbbbed4a477fd19a22180f3f859910160405180910390a250565b60008151600014611088576000610fd984610d43565b604051602001610feb91815260200190565b60405160208183030381529060405280519060200120905061104c836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836111e5565b611082576040517f4a82146400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506110fe565b61109183610d43565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832084845290915290205490915060ff166110fe576040517f7a93323400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602052604081205490911680156111d6576040517ff9ae35a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f9ae35a29061118d9086908a908a908a90600401612166565b602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611bb2565b9150506111dc565b60019150505b95945050505050565b6000826111f285846111fb565b14949350505050565b600081815b84518110156112405761122c8286838151811061121f5761121f6121a4565b602002602001015161124a565b915080611238816121d3565b915050611200565b5090505b92915050565b60008183106112665760008281526020849052604090206110fe565b5060009182526020526040902090565b60006060828403121561128857600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b057600080fd5b50565b60008083601f8401126112c557600080fd5b50813567ffffffffffffffff8111156112dd57600080fd5b6020830191508360208285010111156112f557600080fd5b9250929050565b80151581146112b057600080fd5b8035611315816112fc565b919050565b60008060008060006080868803121561133257600080fd5b853567ffffffffffffffff8082111561134a57600080fd5b61135689838a01611276565b9650602088013591506113688261128e565b9094506040870135908082111561137e57600080fd5b5061138b888289016112b3565b909450925050606086013561139f816112fc565b809150509295509295909350565b60006040828403121561128857600080fd5b600080604083850312156113d257600080fd5b82359150602083013567ffffffffffffffff8111156113f057600080fd5b6113fc858286016113ad565b9150509250929050565b80356113158161128e565b6000806040838503121561142457600080fd5b823561142f8161128e565b946020939093013593505050565b6000806000806000806080878903121561145657600080fd5b86356114618161128e565b9550602087013567ffffffffffffffff8082111561147e57600080fd5b61148a8a838b01611276565b965060408901359150808211156114a057600080fd5b6114ac8a838b016112b3565b909650945060608901359150808211156114c557600080fd5b818901915089601f8301126114d957600080fd5b8135818111156114e857600080fd5b8a60208260051b85010111156114fd57600080fd5b6020830194508093505050509295509295509295565b805173ffffffffffffffffffffffffffffffffffffffff1682526020810151611554602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604081015161157c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606081015160608301526080810151608083015260a08101516115a860a084018263ffffffff169052565b5060c081015160c083015260e081015160e0830152610100808201518184015250610120808201516115dd8285018215159052565b5050610140818101519083015261016090810151910152565b6000815180845260005b8181101561161c57602081850181015186830182015201611600565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60006101a06116698386611513565b806101808401526111dc818401856115f6565b6000806040838503121561168f57600080fd5b823561169a8161128e565b9150602083013567ffffffffffffffff8111156116b657600080fd5b6113fc85828601611276565b600080600080600080600080600060e08a8c0312156116e057600080fd5b89356116eb8161128e565b985060208a01356116fb8161128e565b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561172d57600080fd5b6117398d838e016112b3565b909650945060c08c013591508082111561175257600080fd5b5061175f8c828d016112b3565b915080935050809150509295985092959850929598565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156117c8576117c8611776565b60405290565b604051610180810167ffffffffffffffff811182821017156117c8576117c8611776565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561183957611839611776565b604052919050565b600082601f83011261185257600080fd5b813567ffffffffffffffff81111561186c5761186c611776565b61189d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016117f2565b8181528460208386010111156118b257600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156118e157600080fd5b6118e96117a5565b905081356118f68161128e565b815260208281013590820152604082013567ffffffffffffffff81111561191c57600080fd5b61192884828501611841565b60408301525092915050565b60006020828403121561194657600080fd5b813567ffffffffffffffff81111561195d57600080fd5b611969848285016118cf565b949350505050565b60008060008060006080868803121561198957600080fd5b85359450602086013567ffffffffffffffff808211156119a857600080fd5b6119b489838a016113ad565b9550604088013591506119c68261128e565b909350606087013590808211156119dc57600080fd5b506119e9888289016112b3565b969995985093965092949392505050565b600060208284031215611a0c57600080fd5b81356110fe8161128e565b60008060408385031215611a2a57600080fd5b823567ffffffffffffffff811115611a4157600080fd5b611a4d85828601611276565b9250506020830135611a5e816112fc565b809150509250929050565b600060208284031215611a7b57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611969602083018486611a82565b600060208284031215611af157600080fd5b5051919050565b600061124436836118cf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b3957600080fd5b830160208101925035905067ffffffffffffffff811115611b5957600080fd5b8036038213156112f557600080fd5b82815260406020820152813560408201526000611b886020840184611b04565b60406060850152611b9d608085018284611a82565b9695505050505050565b8051611315816112fc565b600060208284031215611bc457600080fd5b81516110fe816112fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c0457600080fd5b83018035915067ffffffffffffffff821115611c1f57600080fd5b6020019150368190038213156112f557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808a16835280891660208401525086604083015260a06060830152611c7460a083018688611a82565b8281036080840152611c87818587611a82565b9a9950505050505050505050565b80516113158161128e565b63ffffffff811681146112b057600080fd5b805161131581611ca0565b60006101808284031215611cd057600080fd5b611cd86117ce565b611ce183611c95565b8152611cef60208401611c95565b6020820152611d0060408401611c95565b60408201526060830151606082015260808301516080820152611d2560a08401611cb2565b60a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120611d58818501611ba7565b908201526101408381015190820152610160928301519281019290925250919050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101516020830152600060408201516060604085015261196960608501826115f6565b805160608084528151908401819052600091602091908201906080860190845b81811015611df657835183529284019291840191600101611dda565b505082850151915085810383870152611e0f8183611d7b565b92505050604083015184820360408601526111dc82826115f6565b60006101a0611e398386611513565b806101808401526111dc81840185611dba565b61018081016112448284611513565b6020815260006110fe6020830184611dba565b848152836020820152608060408201526000611e8d60808301856115f6565b8281036060840152611e9f81856115f6565b979650505050505050565b60006020808385031215611ebd57600080fd5b823567ffffffffffffffff80821115611ed557600080fd5b9084019060608287031215611ee957600080fd5b611ef16117a5565b823582811115611f0057600080fd5b8301601f81018813611f1157600080fd5b803583811115611f2357611f23611776565b8060051b611f328782016117f2565b918252828101870191878101908b841115611f4c57600080fd5b938801935b83851015611f6a57843582529388019390880190611f51565b8552505050508284013582811115611f8157600080fd5b611f8d888286016118cf565b85830152506040830135935081841115611fa657600080fd5b611fb287858501611841565b60408201529695505050505050565b803561131581611ca0565b60006101808284031215611fdf57600080fd5b611fe76117ce565b611ff083611406565b8152611ffe60208401611406565b602082015261200f60408401611406565b6040820152606083013560608201526080830135608082015261203460a08401611fc1565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012061206781850161130a565b908201526101408381013590820152610160928301359281019290925250919050565b600061026073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152508860408401528760608401528660808401528060a08401526120d6818401876115f6565b905082810360c08401526120ea81866115f6565b915050610d3660e0830184611513565b6020815260006110fe6020830184611d7b565b602081526000823561211e8161128e565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526121526040840184611b04565b6060808501526111dc608085018284611a82565b60006101e06121758388611513565b85610180840152806101a084015261218f81840186611d7b565b90508281036101c0840152611e9f81856115f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122010e2df2415460a8de9c00f961f0bd6ddb618cd730b2884bd59588660b57a90aa64736f6c6343000813003360a060405234801561001057600080fd5b5060405161124638038061124683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516111b5610091600039600081816093015261037701526111b56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806314a2a7841461007957806393504c521461008e578063b8296fc4146100da575b600080fd5b61006461005f366004610c70565b6100fa565b60405190151581526020015b60405180910390f35b61008c610087366004610d34565b610193565b005b6100b57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6100ed6100e8366004610e22565b6102b0565b6040516100709190610ec1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061018d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101a48b8b89898989896102b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b905260228101919091526042902090915089146102a357604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290529061031d8686018761106c565b90508060a001516000036103e8576040517f1c7662c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018990527f00000000000000000000000000000000000000000000000000000000000000001690631c7662c890604401602060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e29190611108565b60a08201525b6103f181610476565b91508160a0015163ffffffff1642111561046a57604080518082018252600f81527f6e6f742077697468696e207370616e0000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50979650505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101919091526104e082610622565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff16815260200183606001518152602001836080015181526020016105856105808560a001518660c001518760e00151886101000151610a43565b610bd6565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc98152509050919050565b806020015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106c257604080518082018252600a81527f73616d6520746f6b656e00000000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b805173ffffffffffffffffffffffffffffffffffffffff16158015906107015750602081015173ffffffffffffffffffffffffffffffffffffffff1615155b61076a57604080518082018252600d81527f696e76616c696420746f6b656e00000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160600151116107db57604080518082018252601881527f696e76616c696420706172742073656c6c20616d6f756e740000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b600081608001511161084c57604080518082018252601681527f696e76616c6964206d696e2070617274206c696d697400000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60a081015163ffffffff116108c057604080518082018252601281527f696e76616c69642073746172742074696d650000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60018160c001511180156108dc575060c081015163ffffffff10155b61094557604080518082018252601181527f696e76616c6964206e756d207061727473000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008160e0015111801561096157506301e133808160e0015111155b6109ca57604080518082018252601181527f696e76616c6964206672657175656e6379000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b8060e001518161010001511115610a4057604080518082018252600c81527f696e76616c6964207370616e0000000000000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b50565b6000600184118015610a59575063ffffffff8411155b610a6557610a65611121565b600083118015610a7957506301e133808311155b610a8557610a85611121565b82821115610a9557610a95611121565b42851115610b0257604080518082018252601181527f6265666f72652074776170207374617274000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b82840285014210610b7257604080518082018252601181527f616674657220747761702066696e697368000000000000000000000000000000602082015290517fc8fc272500000000000000000000000000000000000000000000000000000000815261029a9190600401610faf565b60008386420381610b8557610b85611150565b04905082600003610ba3576001848260010102870103915050610bce565b8302850182017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190505b949350505050565b600063ffffffff821115610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161029a565b5090565b600060208284031215610c8257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cb257600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a4057600080fd5b8035610ce681610cb9565b919050565b60008083601f840112610cfd57600080fd5b50813567ffffffffffffffff811115610d1557600080fd5b602083019150836020828501011115610d2d57600080fd5b9250929050565b6000806000806000806000806000806102608b8d031215610d5457600080fd5b610d5e8b35610cb9565b8a35995060208b0135610d7081610cb9565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff80821115610da257600080fd5b610dae8e838f01610ceb565b909750955060c08d0135915080821115610dc757600080fd5b50610dd48d828e01610ceb565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610e0d57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610e3d57600080fd5b8735610e4881610cb9565b96506020880135610e5881610cb9565b955060408801359450606088013567ffffffffffffffff80821115610e7c57600080fd5b610e888b838c01610ceb565b909650945060808a0135915080821115610ea157600080fd5b50610eae8a828b01610ceb565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610f07602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610f2f604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610f5b60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610f908285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610fdc57858101830151858201604001528201610fc0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b604051610140810167ffffffffffffffff81118282101715611066577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610140828403121561107f57600080fd5b61108761101b565b61109083610cdb565b815261109e60208401610cdb565b60208201526110af60408401610cdb565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508091505092915050565b60006020828403121561111a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e8b6751d41a41ca93f105e8ecec120b312c0f0b62b7761e9cf4cfe50b3ed25bb64736f6c63430008130033608060405234801561001057600080fd5b50610fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610777565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461083e565b61013c565b005b61009661009136600461092c565b610259565b60405161006591906109cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610cb1565b90508060a0015142101561033f5760a0810151604080518082018252600981527f746f6f206561726c790000000000000000000000000000000000000000000000602082015290517f7e334637000000000000000000000000000000000000000000000000000000008152610243929190600401610d9c565b608081015181516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906370a0823190602401602060405180830381865afa1580156103b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d79190610dbd565b101561044257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b600061045084860186610dd6565b61010083015151909150156105ac57600082610100015180602001905181019061047a9190610def565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16630d1003ee85606001518660000151876020015186602001516040518563ffffffff1660e01b81526004016104d19493929190610eb6565b602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190610dbd565b905061271082604001516127106105299190610f2e565b6105339083610f41565b61053d9190610f58565b8310156105a957604080518082018252601481527f707269636520636865636b6572206661696c6564000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610b27565b50505b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff168152602001836060015181526020018281526020016106358460c001516106dd565b63ffffffff1681526020018361012001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020018360e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b600063ffffffff821115610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610243565b5090565b60006020828403121561078957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146107b957600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e257600080fd5b50565b80356107f0816107c0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561085e57600080fd5b6108688b356107c0565b8a35995060208b013561087a816107c0565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156108ac57600080fd5b6108b88e838f016107f5565b909750955060c08d01359150808211156108d157600080fd5b506108de8d828e016107f5565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561091757600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a03121561094757600080fd5b8735610952816107c0565b96506020880135610962816107c0565b955060408801359450606088013567ffffffffffffffff8082111561098657600080fd5b6109928b838c016107f5565b909650945060808a01359150808211156109ab57600080fd5b506109b88a828b016107f5565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610a11602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610a39604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610a6560a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610a9a8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b60008151808452610af5816020860160208601610ab9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107b96020830184610add565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b60405290565b6040516060810167ffffffffffffffff81118282101715610b8d57610b8d610b3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bfd57610bfd610b3a565b604052919050565b803580151581146107f057600080fd5b600067ffffffffffffffff821115610c2f57610c2f610b3a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610c6c57600080fd5b8135610c7f610c7a82610c15565b610bb6565b818152846020838601011115610c9457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610cc357600080fd5b813567ffffffffffffffff80821115610cdb57600080fd5b908301906101408286031215610cf057600080fd5b610cf8610b69565b610d01836107e5565b8152610d0f602084016107e5565b6020820152610d20604084016107e5565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152610d5960e08401610c05565b60e08201526101008084013583811115610d7257600080fd5b610d7e88828701610c5b565b91830191909152506101209283013592810192909252509392505050565b828152604060208201526000610db56040830184610add565b949350505050565b600060208284031215610dcf57600080fd5b5051919050565b600060208284031215610de857600080fd5b5035919050565b60006020808385031215610e0257600080fd5b825167ffffffffffffffff80821115610e1a57600080fd5b9084019060608287031215610e2e57600080fd5b610e36610b93565b8251610e41816107c0565b81528284015182811115610e5457600080fd5b83019150601f82018713610e6757600080fd5b8151610e75610c7a82610c15565b8181528886838601011115610e8957600080fd5b610e9882878301888701610ab9565b80868401525050604083015160408201528094505050505092915050565b848152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610ef56080830184610add565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610eff565b808202811582820484141761013657610136610eff565b600082610f8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122022ba45584e62cccada745134fadc652e2b6ba6d801296170f9944dfc298e52ac64736f6c63430008130033608060405234801561001057600080fd5b50610f82806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610858565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c36600461090f565b61013c565b005b6100966100913660046109fd565b610259565b6040516100659190610a9c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610c0f565b905060006102d48a83610475565b9050600081604001511161034757604080518082018252600a81527f6e6f742066756e64656400000000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610b8a565b604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200182604001518152602001826060015181526020016103d184604001516106f0565b63ffffffff16815260200183608001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152815160208301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908416906370a0823190602401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190610cbd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918416906370a0823190602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190610cbd565b9050806105d8858486610712565b11156106645760405180608001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001612710886060015161271061063c9190610d05565b610647888789610712565b6106519190610d18565b61065b9190610d5e565b905294506106e6565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200182815260200161271088606001516127106106c29190610d05565b6106cd87868a610712565b6106d79190610d18565b6106e19190610d5e565b905294505b5050505092915050565b600081806106fe8142610d72565b6107089190610d95565b6101369190610dbd565b6000808473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107849190610de1565b905060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610de1565b90508060ff168260ff16111561082d576108118183610e04565b61081c90600a610f3d565b6108269086610d5e565b925061084f565b6108378282610e04565b61084290600a610f3d565b61084c9086610d18565b92505b50509392505050565b60006020828403121561086a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461089a57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108c357600080fd5b50565b60008083601f8401126108d857600080fd5b50813567ffffffffffffffff8111156108f057600080fd5b60208301915083602082850101111561090857600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561092f57600080fd5b6109398b356108a1565b8a35995060208b013561094b816108a1565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561097d57600080fd5b6109898e838f016108c6565b909750955060c08d01359150808211156109a257600080fd5b506109af8d828e016108c6565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156109e857600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a1857600080fd5b8735610a23816108a1565b96506020880135610a33816108a1565b955060408801359450606088013567ffffffffffffffff80821115610a5757600080fd5b610a638b838c016108c6565b909650945060808a0135915080821115610a7c57600080fd5b50610a898a828b016108c6565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610ae2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b0a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b3660a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610b6b8285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bb757858101830151858201604001528201610b9b565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff81168114610c0a57600080fd5b919050565b600060a08284031215610c2157600080fd5b60405160a0810181811067ffffffffffffffff82111715610c6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610c79816108a1565b81526020830135610c89816108a1565b6020820152610c9a60408401610bf6565b604082015260608301356060820152608083013560808201528091505092915050565b600060208284031215610ccf57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561013657610136610cd6565b808202811582820484141761013657610136610cd6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610d6d57610d6d610d2f565b500490565b600063ffffffff80841680610d8957610d89610d2f565b92169190910492915050565b63ffffffff818116838216028082169190828114610db557610db5610cd6565b505092915050565b63ffffffff818116838216019080821115610dda57610dda610cd6565b5092915050565b600060208284031215610df357600080fd5b815160ff8116811461089a57600080fd5b60ff828116828216039081111561013657610136610cd6565b600181815b80851115610e7657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e5c57610e5c610cd6565b80851615610e6957918102915b93841c9390800290610e22565b509250929050565b600082610e8d57506001610136565b81610e9a57506000610136565b8160018114610eb05760028114610eba57610ed6565b6001915050610136565b60ff841115610ecb57610ecb610cd6565b50506001821b610136565b5060208310610133831016604e8410600b8410161715610ef9575081810a610136565b610f038383610e1d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f3557610f35610cd6565b029392505050565b600061089a60ff841683610e7e56fea2646970667358221220ef97e33348ec9642e162f19ce668c9f7fb155d488f8a668360ab608034107eb764736f6c63430008130033608060405234801561001057600080fd5b50610aaf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b61005961005436600461051e565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c3660046105e5565b61013c565b005b6100966100913660046106d3565b610259565b6040516100659190610772565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610860565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c6868601876108e0565b80516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f919061099b565b905081608001518110156103d257604080518082018252601481527f62616c616e636520696e73756666696369656e74000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610860565b604051806101800160405280836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015173ffffffffffffffffffffffffffffffffffffffff168152602001836040015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001815260200161045884606001516104fc565b63ffffffff1681526020018360a001518152602001600081526020017ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee34677581526020016000151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981525092505050979650505050505050565b6000818061050a81426109e3565b6105149190610a2d565b6101369190610a55565b60006020828403121561053057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056057600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461058957600080fd5b50565b803561059781610567565b919050565b60008083601f8401126105ae57600080fd5b50813567ffffffffffffffff8111156105c657600080fd5b6020830191508360208285010111156105de57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561060557600080fd5b61060f8b35610567565b8a35995060208b013561062181610567565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff8082111561065357600080fd5b61065f8e838f0161059c565b909750955060c08d013591508082111561067857600080fd5b506106858d828e0161059c565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200112156106be57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a0312156106ee57600080fd5b87356106f981610567565b9650602088013561070981610567565b955060408801359450606088013567ffffffffffffffff8082111561072d57600080fd5b6107398b838c0161059c565b909650945060808a013591508082111561075257600080fd5b5061075f8a828b0161059c565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff168152610180810160208301516107b8602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516107e0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015161080c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e0830152610100808401518184015250610120808401516108418285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b8181101561088d57858101830151858201604001528201610871565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803563ffffffff8116811461059757600080fd5b600060c082840312156108f257600080fd5b60405160c0810181811067ffffffffffffffff8211171561093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526109488361058c565b81526109566020840161058c565b60208201526109676040840161058c565b6040820152610978606084016108cc565b60608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156109ad57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80841680610a21577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216028082169190828114610a4d57610a4d6109b4565b505092915050565b63ffffffff818116838216019080821115610a7257610a726109b4565b509291505056fea264697066735822122038abb60e96298627f6cb671e32a141a9d83839961e23a08c1118b1dc180de57564736f6c63430008130033608060405234801561001057600080fd5b506110a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806314a2a7841461006e578063b8296fc414610083575b600080fd5b610059610054366004610885565b6100a3565b60405190151581526020015b60405180910390f35b61008161007c366004610945565b61013c565b005b610096610091366004610a33565b610259565b6040516100659190610ad2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb8296fc400000000000000000000000000000000000000000000000000000000148061013657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061014d8b8b8989898989610259565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a0822091526040517f19010000000000000000000000000000000000000000000000000000000000008152600281018b9052602281019190915260429020909150891461024c57604080518082018252600c81527f696e76616c696420686173680000000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60405180910390fd5b5050505050505050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052906102c686860187610ca1565b90504281610100015163ffffffff16101561034057604080518082018252600d81527f6f72646572206578706972656400000000000000000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b60008082610120015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b79190610d98565b5093505092505060008084610140015173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104359190610d98565b5093505092505060008413801561044c5750600082135b6104b557604080518082018252601481527f6f7261636c6520696e76616c6964207072696365000000000000000000000000602082015290517fc8fc27250000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6101808501516104c59042610e17565b83101580156104e357506101808501516104df9042610e17565b8110155b61054c57604080518082018252601281527f6f7261636c65207374616c652070726963650000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b6105cb8486610120015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c49190610e2a565b6012610812565b93506106218286610140015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a0573d6000803e3d6000fd5b6101608601519092508261063d670de0b6b3a764000087610e4d565b6106479190610e99565b13156106b257604080518082018252601281527f737472696b65206e6f7420726561636865640000000000000000000000000000602082015290517fd05f30650000000000000000000000000000000000000000000000000000000081526102439190600401610bc0565b50505050604051806101800160405280826000015173ffffffffffffffffffffffffffffffffffffffff168152602001826020015173ffffffffffffffffffffffffffffffffffffffff1681526020018260a0015173ffffffffffffffffffffffffffffffffffffffff168152602001826040015181526020018260600151815260200182610100015163ffffffff16815260200182608001518152602001600081526020018260c00151610787577f6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc6107a9565b7ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467755b81526020018260e00151151581526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc981526020017f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9815250915050979650505050505050565b60008160ff168360ff16101561084b5761082c8383610f28565b61083a9060ff16600a611061565b6108449085610e4d565b905061087e565b8160ff168360ff16111561087b576108638284610f28565b6108719060ff16600a611061565b6108449085610e99565b50825b9392505050565b60006020828403121561089757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461087e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146108e957600080fd5b50565b80356108f7816108c7565b919050565b60008083601f84011261090e57600080fd5b50813567ffffffffffffffff81111561092657600080fd5b60208301915083602082850101111561093e57600080fd5b9250929050565b6000806000806000806000806000806102608b8d03121561096557600080fd5b61096f8b356108c7565b8a35995060208b0135610981816108c7565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156109b357600080fd5b6109bf8e838f016108fc565b909750955060c08d01359150808211156109d857600080fd5b506109e58d828e016108fc565b9094509250506101808b8d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20011215610a1e57600080fd5b60e08b0190509295989b9194979a5092959850565b600080600080600080600060a0888a031215610a4e57600080fd5b8735610a59816108c7565b96506020880135610a69816108c7565b955060408801359450606088013567ffffffffffffffff80821115610a8d57600080fd5b610a998b838c016108fc565b909650945060808a0135915080821115610ab257600080fd5b50610abf8a828b016108fc565b989b979a50959850939692959293505050565b815173ffffffffffffffffffffffffffffffffffffffff16815261018081016020830151610b18602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151610b40604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a0830151610b6c60a084018263ffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525061012080840151610ba18285018215159052565b5050610140838101519083015261016092830151929091019190915290565b600060208083528351808285015260005b81811015610bed57858101830151858201604001528201610bd1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6040516101a0810167ffffffffffffffff81118282101715610c77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803580151581146108f757600080fd5b803563ffffffff811681146108f757600080fd5b60006101a08284031215610cb457600080fd5b610cbc610c2c565b610cc5836108ec565b8152610cd3602084016108ec565b6020820152604083013560408201526060830135606082015260808301356080820152610d0260a084016108ec565b60a0820152610d1360c08401610c7d565b60c0820152610d2460e08401610c7d565b60e0820152610100610d37818501610c8d565b90820152610120610d498482016108ec565b90820152610140610d5b8482016108ec565b908201526101608381013590820152610180928301359281019290925250919050565b805169ffffffffffffffffffff811681146108f757600080fd5b600080600080600060a08688031215610db057600080fd5b610db986610d7e565b9450602086015193506040860151925060608601519150610ddc60808701610d7e565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561013657610136610de8565b600060208284031215610e3c57600080fd5b815160ff8116811461087e57600080fd5b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615610e8557610e85610de8565b818105831482151761013657610136610de8565b600082610ecf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610f2357610f23610de8565b500590565b60ff828116828216039081111561013657610136610de8565b600181815b80851115610f9a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f8057610f80610de8565b80851615610f8d57918102915b93841c9390800290610f46565b509250929050565b600082610fb157506001610136565b81610fbe57506000610136565b8160018114610fd45760028114610fde57610ffa565b6001915050610136565b60ff841115610fef57610fef610de8565b50506001821b610136565b5060208310610133831016604e8410600b841016171561101d575081810a610136565b6110278383610f41565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105957611059610de8565b029392505050565b600061087e8383610fa256fea26469706673582212209b320a2b5454b0ecefde7c01c2b8ff316ef7bd8175de6191fe74ea73da2d6d4064736f6c63430008130033608060405234801561001057600080fd5b5060f48061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603f60383660046051565b4292915050565b60405190815260200160405180910390f35b60008060208385031215606357600080fd5b823567ffffffffffffffff80821115607a57600080fd5b818501915085601f830112608d57600080fd5b813581811115609b57600080fd5b86602082850101111560ac57600080fd5b6020929092019691955090935050505056fea2646970667358221220ab263683a024250b9359febe188378c982b794bc2b7730ab221465e360593e4e64736f6c63430008130033a26469706673582212206f3e7037b9e3496e72279dd45ce58e030435448baa6efda96a3209900352a45664736f6c63430008130033","sourceMap":"771:826:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;812:783;;;:::i;:::-;;758:28:28;;;;;;;;;;;;179:14:122;;172:22;154:41;;142:2;127:18;758:28:28;;;;;;;812:783:84;875:25;;;;;408:2:122;875:25:84;;;390:21:122;447:2;427:18;;;420:30;486:13;466:18;;;459:41;846:26:84;;875:10;;;;517:18:122;;875:25:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;931:27;;;;;937:2:122;931:27:84;;;919:21:122;976:2;956:18;;;949:30;1015:12;995:18;;;988:40;846:54:84;;-1:-1:-1;910:18:84;;931:13;;;;1045:18:122;;931:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;969:37;;;;;;;;1538:25:122;;;910:48:84;;-1:-1:-1;969:17:84;;;;1511:18:122;;969:37:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:27;1181:45;1215:10;1181:45;;;;;:::i;:::-;1750:42:122;1738:55;;;1720:74;;1708:2;1693:18;1181:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:75;;1267:39;1292:13;1267:39;;;;;:::i;:::-;1750:42:122;1738:55;;;1720:74;;1708:2;1693:18;1267:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;1316:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1361:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1412;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1463:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1538:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:759;;;812:783::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;546:184:122:-;616:6;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;-1:-1:-1;708:16:122;;546:184;-1:-1:-1;546:184:122:o;1074:313::-;1144:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:52;;;1213:1;1210;1203:12;1165:52;1245:9;1239:16;1295:42;1288:5;1284:54;1277:5;1274:65;1264:93;;1353:1;1350;1343:12;1264:93;1376:5;1074:313;-1:-1:-1;;;1074:313:122:o","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/deploy_ProdStack.s.sol\":\"DeployProdStack\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"script/deploy_ProdStack.s.sol\":{\"keccak256\":\"0xd7568a7e4a1ec3880aa3d87c30f3d2d59c84713f39ba5c8f8c58e96ac7f72b4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ed558d28d4903b7fc3d5618d0eba7e74974b8e419a300c9852ba6a7d748fafbb\",\"dweb:/ipfs/QmWzskQjCKeW8vnssviYhycBVkPYTKAuS5gfkJc95xTqng\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/interfaces/IAggregatorV3Interface.sol\":{\"keccak256\":\"0x7edac36e73aa9a9693747b30013bc76a82f717a0c713d49dffa74842b872bb77\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aa1e61229e0d2219bff2257a5ea2ea783a6c275cbee6ef8bd322fe229f88fa7b\",\"dweb:/ipfs/Qmdw8g8jLjofmzMBraACN23NE5i5QMmJsPCqRjhmfygzJX\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/ConditionalOrdersUtilsLib.sol\":{\"keccak256\":\"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777\",\"dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf\"]},\"src/types/GoodAfterTime.sol\":{\"keccak256\":\"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a\",\"dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT\"]},\"src/types/PerpetualStableSwap.sol\":{\"keccak256\":\"0xed5f911d46ffa3e463f247978cd8d67110461cf36aa51658141dcc5130e90cb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96f6fa29716bae22b73dd858ab031a34a67ecae4cd9262e501b1096921a463e0\",\"dweb:/ipfs/QmZgsii972eu4S16CfvQh8rvJttT22YeTv5VkKrQB3jZQR\"]},\"src/types/StopLoss.sol\":{\"keccak256\":\"0x5b2ffe903f4168b9e08a23a6d1dbdad725c3fe24ae84e27f1a89de6604542745\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://adf271d87b4d602de9d537d73129d1779b984e859dd35f4780c2036918c80cc8\",\"dweb:/ipfs/QmP4eRg7KYq6Pii2UKKprAV65CKj5iqi3yEpfa6jA6LX47\"]},\"src/types/TradeAboveThreshold.sol\":{\"keccak256\":\"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b\",\"dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/value_factories/CurrentBlockTimestampFactory.sol\":{\"keccak256\":\"0x923cafbf1a55044632cb9a289e2df3d74b461808d15ab1e8e0775e9829d8473a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5e70fdf0a54f4cc29ca974301d7a4dc4c289a197084268a6767981160a0d6595\",\"dweb:/ipfs/Qmf9JWipmNgRsXrcUBBBe1AZPCKD7tW72gmLedDpmNdUs6\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"src/vendored/Milkman.sol\":{\"keccak256\":\"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3\",\"dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/deploy_ProdStack.s.sol":"DeployProdStack"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"script/deploy_ProdStack.s.sol":{"keccak256":"0xd7568a7e4a1ec3880aa3d87c30f3d2d59c84713f39ba5c8f8c58e96ac7f72b4d","urls":["bzz-raw://ed558d28d4903b7fc3d5618d0eba7e74974b8e419a300c9852ba6a7d748fafbb","dweb:/ipfs/QmWzskQjCKeW8vnssviYhycBVkPYTKAuS5gfkJc95xTqng"],"license":"GPL-3.0"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/interfaces/IAggregatorV3Interface.sol":{"keccak256":"0x7edac36e73aa9a9693747b30013bc76a82f717a0c713d49dffa74842b872bb77","urls":["bzz-raw://aa1e61229e0d2219bff2257a5ea2ea783a6c275cbee6ef8bd322fe229f88fa7b","dweb:/ipfs/Qmdw8g8jLjofmzMBraACN23NE5i5QMmJsPCqRjhmfygzJX"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/ConditionalOrdersUtilsLib.sol":{"keccak256":"0x38e4ce4fc58c018f510ee45d78ae49253e8aa70fdf559d83ebb6c838c6b47aae","urls":["bzz-raw://a38ccd5b8ce2895a77b7474b1ac36ebfccc975b3839f6d3bfef72700f8f6f777","dweb:/ipfs/QmSfs5zZ4U14NkZYSqAFUBcuKGjyfMM5Dp2sbj14FmVYPf"],"license":"MIT"},"src/types/GoodAfterTime.sol":{"keccak256":"0xb3d2a0fe9f55c7a0da6e60385be14db9fc47c2ec4bf57b93634b0e8b686c8a3e","urls":["bzz-raw://70730d0828e7079fd7ff2be9b9ebba459c958d7f07d3491bd04460bb1dc13e0a","dweb:/ipfs/QmZuucDqD5xeMAShn3dXCdzuMkqGAmeCAuQLRfvKxjp2cT"],"license":"GPL-3.0"},"src/types/PerpetualStableSwap.sol":{"keccak256":"0xed5f911d46ffa3e463f247978cd8d67110461cf36aa51658141dcc5130e90cb4","urls":["bzz-raw://96f6fa29716bae22b73dd858ab031a34a67ecae4cd9262e501b1096921a463e0","dweb:/ipfs/QmZgsii972eu4S16CfvQh8rvJttT22YeTv5VkKrQB3jZQR"],"license":"MIT"},"src/types/StopLoss.sol":{"keccak256":"0x5b2ffe903f4168b9e08a23a6d1dbdad725c3fe24ae84e27f1a89de6604542745","urls":["bzz-raw://adf271d87b4d602de9d537d73129d1779b984e859dd35f4780c2036918c80cc8","dweb:/ipfs/QmP4eRg7KYq6Pii2UKKprAV65CKj5iqi3yEpfa6jA6LX47"],"license":"GPL-3.0"},"src/types/TradeAboveThreshold.sol":{"keccak256":"0x9ba7500f4195738b96e7a4fb9a1b3a12e478fea050a9bb6b0f574fb0ea2e91e7","urls":["bzz-raw://1f14ea1641ce3bd28afdf22d53f4939b39cc8c4a1fcb518e00189d800c409b3b","dweb:/ipfs/QmQ5pWGUkYh4fWUkXDZT1TBwpmTJ1LVDuosebwktsohBMA"],"license":"MIT"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/value_factories/CurrentBlockTimestampFactory.sol":{"keccak256":"0x923cafbf1a55044632cb9a289e2df3d74b461808d15ab1e8e0775e9829d8473a","urls":["bzz-raw://5e70fdf0a54f4cc29ca974301d7a4dc4c289a197084268a6767981160a0d6595","dweb:/ipfs/Qmf9JWipmNgRsXrcUBBBe1AZPCKD7tW72gmLedDpmNdUs6"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"src/vendored/Milkman.sol":{"keccak256":"0x4026a6723504915ff92349660c9377d20e62d32a3b8013ae186e1eadff69c60a","urls":["bzz-raw://05a835939fce6f0313baacdb1c5677e5297d65d23a191cf791a45e334911e6f3","dweb:/ipfs/QmRYLwimpCKaspbVyBaybMjtmYfpZWB8M6UVnWQGk7JajH"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file diff --git a/out/deploy_ValueFactories.s.sol/DeployValueFactories.json b/out/deploy_ValueFactories.s.sol/DeployValueFactories.json new file mode 100644 index 0000000..7da080d --- /dev/null +++ b/out/deploy_ValueFactories.s.sol/DeployValueFactories.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b506103c38061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610261565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561018c57600080fd5b505af11580156101a0573d6000803e3d6000fd5b505050506040516101b090610254565b604051809103906000f0801580156101cc573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050565b6101138061027b83390190565b60006020828403121561027357600080fd5b505191905056fe608060405234801561001057600080fd5b5060f48061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603f60383660046051565b4292915050565b60405190815260200160405180910390f35b60008060208385031215606357600080fd5b823567ffffffffffffffff80821115607a57600080fd5b818501915085601f830112608d57600080fd5b813581811115609b57600080fd5b86602082850101111560ac57600080fd5b6020929092019691955090935050505056fea2646970667358221220ab263683a024250b9359febe188378c982b794bc2b7730ab221465e360593e4e64736f6c63430008130033a2646970667358221220b0004f11f722dc319c29ea8510e2d72b78e2f86fa4b7dc361df9fb664fb7848864736f6c63430008130033","sourceMap":"218:264:86:-:0;;;3288:44:30;;;3328:4;-1:-1:-1;;3288:44:30;;;;;;;;758:28:28;;;;;;;;;;;218:264:86;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101239190610261565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561018c57600080fd5b505af11580156101a0573d6000803e3d6000fd5b505050506040516101b090610254565b604051809103906000f0801580156101cc573d6000803e3d6000fd5b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050565b6101138061027b83390190565b60006020828403121561027357600080fd5b505191905056fe608060405234801561001057600080fd5b5060f48061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b6576bdf14602d575b600080fd5b603f60383660046051565b4292915050565b60405190815260200160405180910390f35b60008060208385031215606357600080fd5b823567ffffffffffffffff80821115607a57600080fd5b818501915085601f830112608d57600080fd5b813581811115609b57600080fd5b86602082850101111560ac57600080fd5b6020929092019691955090935050505056fea2646970667358221220ab263683a024250b9359febe188378c982b794bc2b7730ab221465e360593e4e64736f6c63430008130033a2646970667358221220b0004f11f722dc319c29ea8510e2d72b78e2f86fa4b7dc361df9fb664fb7848864736f6c63430008130033","sourceMap":"218:264:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;264:216;;;:::i;:::-;;758:28:28;;;;;;;;;;;;179:14:124;;172:22;154:41;;142:2;127:18;758:28:28;;;;;;;264:216:86;327:25;;;;;408:2:124;327:25:86;;;390:21:124;447:2;427:18;;;420:30;486:13;466:18;;;459:41;298:26:86;;327:10;;;;517:18:124;;327:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;362:37;;;;;;;;881:25:124;;;298:54:86;;-1:-1:-1;362:17:86;;;;854:18:124;;362:37:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;410:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;317:28:27;309:37;;455:16:86;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;288:192;264:216::o;-1:-1:-1:-;;;;;;;;:::o;546:184:124:-;616:6;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;-1:-1:-1;708:16:124;;546:184;-1:-1:-1;546:184:124:o","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/deploy_ValueFactories.s.sol\":\"DeployValueFactories\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"script/deploy_ValueFactories.s.sol\":{\"keccak256\":\"0x394d973370be0e1536efe1a27fb13113099bf2c1fca58091488acce5829000ed\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9ef3b8f378b300b83f0c25cdea021f27680f4303bd6dc8121a493f7808568a2d\",\"dweb:/ipfs/QmSB81eCiRwyQ9nkr4pmUVpmaV2NcpEz1LkZQHkdaytSp2\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/value_factories/CurrentBlockTimestampFactory.sol\":{\"keccak256\":\"0x923cafbf1a55044632cb9a289e2df3d74b461808d15ab1e8e0775e9829d8473a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5e70fdf0a54f4cc29ca974301d7a4dc4c289a197084268a6767981160a0d6595\",\"dweb:/ipfs/Qmf9JWipmNgRsXrcUBBBe1AZPCKD7tW72gmLedDpmNdUs6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/deploy_ValueFactories.s.sol":"DeployValueFactories"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"script/deploy_ValueFactories.s.sol":{"keccak256":"0x394d973370be0e1536efe1a27fb13113099bf2c1fca58091488acce5829000ed","urls":["bzz-raw://9ef3b8f378b300b83f0c25cdea021f27680f4303bd6dc8121a493f7808568a2d","dweb:/ipfs/QmSB81eCiRwyQ9nkr4pmUVpmaV2NcpEz1LkZQHkdaytSp2"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/value_factories/CurrentBlockTimestampFactory.sol":{"keccak256":"0x923cafbf1a55044632cb9a289e2df3d74b461808d15ab1e8e0775e9829d8473a","urls":["bzz-raw://5e70fdf0a54f4cc29ca974301d7a4dc4c289a197084268a6767981160a0d6595","dweb:/ipfs/Qmf9JWipmNgRsXrcUBBBe1AZPCKD7tW72gmLedDpmNdUs6"],"license":"GPL-3.0"}},"version":1},"id":86} \ No newline at end of file diff --git a/out/interfaces/IERC20.sol/IERC20.json b/out/interfaces/IERC20.sol/IERC20.json new file mode 100644 index 0000000..6ee6c45 --- /dev/null +++ b/out/interfaces/IERC20.sol/IERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals the token uses.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the number of decimals the token uses."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":"IERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"}},"version":1},"id":12} \ No newline at end of file diff --git a/out/libraries/SafeCast.sol/SafeCast.json b/out/libraries/SafeCast.sol/SafeCast.json new file mode 100644 index 0000000..a32c12e --- /dev/null +++ b/out/libraries/SafeCast.sol/SafeCast.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8230f868a20cb9531392ffda5cb54f7ce1a1728f0dbc1af3b787e933bcae3a764736f6c63430008130033","sourceMap":"1091:741:20:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1091:741:20;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8230f868a20cb9531392ffda5cb54f7ce1a1728f0dbc1af3b787e933bcae3a764736f6c63430008130033","sourceMap":"1091:741:20:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28\",\"dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":"SafeCast"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/libraries/SafeCast.sol":{"keccak256":"0x1080c5a0503fb51c76806e85b474a795f4e5e401d78cf9ce89f9bf5e921c01f9","urls":["bzz-raw://703f2afd5f5fea8886762b93bc42117a2dc25dfa5464446205b56b0a7cb85d28","dweb:/ipfs/QmRteh6BJdxBdhtsJAhG8EiNGQPRd4Mwb9HWEH56PuGMeQ"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/out/libraries/SafeMath.sol/SafeMath.json b/out/libraries/SafeMath.sol/SafeMath.json new file mode 100644 index 0000000..f998d0a --- /dev/null +++ b/out/libraries/SafeMath.sol/SafeMath.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dc82cc6540d0609ddb2b519f84e103c1f735a05396a44d33af6467586359578864736f6c63430008130033","sourceMap":"940:2472:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;940:2472:21;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dc82cc6540d0609ddb2b519f84e103c1f735a05396a44d33af6467586359578864736f6c63430008130033","sourceMap":"940:2472:21:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e\",\"dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":"SafeMath"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/libraries/SafeMath.sol":{"keccak256":"0x035ecce1066e2cbb1420bda9f1347fc6b95dbd67c370af04d3b2596aae8721cc","urls":["bzz-raw://8d5696297da38e3667d4f6d961829cdd3303ad346da4021e68ddc05ad886a98e","dweb:/ipfs/QmRzHy19ZWDU3mieEdUZgwnaFgi67eFx7SHHWH4Wzahx5d"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/out/mixins/StorageAccessible.sol/StorageAccessible.json b/out/mixins/StorageAccessible.sol/StorageAccessible.json new file mode 100644 index 0000000..0630947 --- /dev/null +++ b/out/mixins/StorageAccessible.sol/StorageAccessible.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getStorageAt","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"simulateDelegatecall","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"response","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"simulateDelegatecallInternal","inputs":[{"name":"targetContract","type":"address","internalType":"address"},{"name":"calldataPayload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"response","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061068d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806343218e19146100465780635624b25b1461006f578063f84436bd14610082575b600080fd5b610059610054366004610377565b610095565b60405161006691906104e0565b60405180910390f35b61005961007d3660046104fa565b610137565b610059610090366004610377565b6101bf565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516100be919061051c565b600060405180830381855af49150503d80600081146100f9576040519150601f19603f3d011682016040523d82523d6000602084013e6100fe565b606091505b506040519093509091506101309061011c9084908490602001610538565b604051602081830303815290604052610340565b5092915050565b6060600061014683602061058f565b67ffffffffffffffff81111561015e5761015e610348565b6040519080825280601f01601f191660200182016040528015610188576020820181803683370190505b50905060005b838110156101b55784810154602080830284010152806101ad816105a6565b91505061018e565b5090505b92915050565b606060006343218e1960e01b84846040516024016101de9291906105de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061026d90839061051c565b6000604051808303816000865af19150503d80600081146102aa576040519150601f19603f3d011682016040523d82523d6000602084013e6102af565b606091505b50905080925050600082600184516102c79190610615565b815181106102d7576102d7610628565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610322836001855161031e9190610615565b9052565b801561032f5750506101b9565b61033883610340565b505092915050565b805160208201fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561038a57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103ae57600080fd5b9150602083013567ffffffffffffffff808211156103cb57600080fd5b818501915085601f8301126103df57600080fd5b8135818111156103f1576103f1610348565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561043757610437610348565b8160405282815288602084870101111561045057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561048d578181015183820152602001610475565b50506000910152565b600081518084526104ae816020860160208601610472565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104f36020830184610496565b9392505050565b6000806040838503121561050d57600080fd5b50508035926020909101359150565b6000825161052e818460208701610472565b9190910192915050565b6000835161054a818460208801610472565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176101b9576101b9610560565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036105d7576105d7610560565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061060d6040830184610496565b949350505050565b818103818111156101b9576101b9610560565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220c8899c35e3925701047a188cf5210803e8a340ae08d402cbffa2ba7c4a2c618464736f6c63430008130033","sourceMap":"1305:3226:25:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806343218e19146100465780635624b25b1461006f578063f84436bd14610082575b600080fd5b610059610054366004610377565b610095565b60405161006691906104e0565b60405180910390f35b61005961007d3660046104fa565b610137565b610059610090366004610377565b6101bf565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040516100be919061051c565b600060405180830381855af49150503d80600081146100f9576040519150601f19603f3d011682016040523d82523d6000602084013e6100fe565b606091505b506040519093509091506101309061011c9084908490602001610538565b604051602081830303815290604052610340565b5092915050565b6060600061014683602061058f565b67ffffffffffffffff81111561015e5761015e610348565b6040519080825280601f01601f191660200182016040528015610188576020820181803683370190505b50905060005b838110156101b55784810154602080830284010152806101ad816105a6565b91505061018e565b5090505b92915050565b606060006343218e1960e01b84846040516024016101de9291906105de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051909150309061026d90839061051c565b6000604051808303816000865af19150503d80600081146102aa576040519150601f19603f3d011682016040523d82523d6000602084013e6102af565b606091505b50905080925050600082600184516102c79190610615565b815181106102d7576102d7610628565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b149050610322836001855161031e9190610615565b9052565b801561032f5750506101b9565b61033883610340565b505092915050565b805160208201fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561038a57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103ae57600080fd5b9150602083013567ffffffffffffffff808211156103cb57600080fd5b818501915085601f8301126103df57600080fd5b8135818111156103f1576103f1610348565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561043757610437610348565b8160405282815288602084870101111561045057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561048d578181015183820152602001610475565b50506000910152565b600081518084526104ae816020860160208601610472565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104f36020830184610496565b9392505050565b6000806040838503121561050d57600080fd5b50508035926020909101359150565b6000825161052e818460208701610472565b9190910192915050565b6000835161054a818460208801610472565b92151560f81b9190920190815260010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176101b9576101b9610560565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036105d7576105d7610560565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061060d6040830184610496565b949350505050565b818103818111156101b9576101b9610560565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220c8899c35e3925701047a188cf5210803e8a340ae08d402cbffa2ba7c4a2c618464736f6c63430008130033","sourceMap":"1305:3226:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3738:376;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1633:488;;;;;;:::i;:::-;;:::i;2557:680::-;;;;;;:::i;:::-;;:::i;3738:376::-;3870:21;3903:12;4006:14;:27;;4034:15;4006:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4071:35:25;;3984:66;;-1:-1:-1;3984:66:25;;-1:-1:-1;4060:47:25;;4071:35;;3984:66;;;;4071:35;;;:::i;:::-;;;;;;;;;;;;;4060:10;:47::i;:::-;3893:221;3738:376;;;;:::o;1633:488::-;1732:12;1756:19;1788:11;:6;1797:2;1788:11;:::i;:::-;1778:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1778:22:25;;1756:44;;1815:13;1810:282;1842:6;1834:5;:14;1810:282;;;1978:18;;;1972:25;2055:4;2044:16;;;2021:40;;;2014:54;1990:5;1850:7;1990:5;1850:7;:::i;:::-;;;;1810:282;;;-1:-1:-1;2108:6:25;-1:-1:-1;1633:488:25;;;;;:::o;2557:680::-;2679:21;2712:22;2773:42;;;2829:14;2857:15;2737:145;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2966:29;;2737:145;;-1:-1:-1;2974:4:25;;2966:29;;2737:145;;2966:29;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2951:44;;;;;;3005:17;3025:8;3052:1;3034:8;:15;:19;;;;:::i;:::-;3025:29;;;;;;;;:::i;:::-;;;;;;;;;:37;;;3058:4;3025:37;;;3005:57;;3072:40;3082:8;3110:1;3092:8;:15;:19;;;;:::i;:::-;4491:22;;4332:197;3072:40;3126:12;3122:109;;;3154:15;;;;3122:109;3200:20;3211:8;3200:10;:20::i;:::-;2702:535;;2557:680;;;;:::o;4120:206::-;4300:8;4294:15;4287:4;4277:8;4273:19;4266:44;14:184:124;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:1177;280:6;288;341:2;329:9;320:7;316:23;312:32;309:52;;;357:1;354;347:12;309:52;396:9;383:23;446:42;439:5;435:54;428:5;425:65;415:93;;504:1;501;494:12;415:93;527:5;-1:-1:-1;583:2:124;568:18;;555:32;606:18;636:14;;;633:34;;;663:1;660;653:12;633:34;701:6;690:9;686:22;676:32;;746:7;739:4;735:2;731:13;727:27;717:55;;768:1;765;758:12;717:55;804:2;791:16;826:2;822;819:10;816:36;;;832:18;;:::i;:::-;966:2;960:9;1028:4;1020:13;;871:66;1016:22;;;1040:2;1012:31;1008:40;996:53;;;1064:18;;;1084:22;;;1061:46;1058:72;;;1110:18;;:::i;:::-;1150:10;1146:2;1139:22;1185:2;1177:6;1170:18;1225:7;1220:2;1215;1211;1207:11;1203:20;1200:33;1197:53;;;1246:1;1243;1236:12;1197:53;1302:2;1297;1293;1289:11;1284:2;1276:6;1272:15;1259:46;1347:1;1342:2;1337;1329:6;1325:15;1321:24;1314:35;1368:6;1358:16;;;;;;;203:1177;;;;;:::o;1385:250::-;1470:1;1480:113;1494:6;1491:1;1488:13;1480:113;;;1570:11;;;1564:18;1551:11;;;1544:39;1516:2;1509:10;1480:113;;;-1:-1:-1;;1627:1:124;1609:16;;1602:27;1385:250::o;1640:329::-;1681:3;1719:5;1713:12;1746:6;1741:3;1734:19;1762:76;1831:6;1824:4;1819:3;1815:14;1808:4;1801:5;1797:16;1762:76;:::i;:::-;1883:2;1871:15;1888:66;1867:88;1858:98;;;;1958:4;1854:109;;1640:329;-1:-1:-1;;1640:329:124:o;1974:217::-;2121:2;2110:9;2103:21;2084:4;2141:44;2181:2;2170:9;2166:18;2158:6;2141:44;:::i;:::-;2133:52;1974:217;-1:-1:-1;;;1974:217:124:o;2196:248::-;2264:6;2272;2325:2;2313:9;2304:7;2300:23;2296:32;2293:52;;;2341:1;2338;2331:12;2293:52;-1:-1:-1;;2364:23:124;;;2434:2;2419:18;;;2406:32;;-1:-1:-1;2196:248:124:o;2449:287::-;2578:3;2616:6;2610:13;2632:66;2691:6;2686:3;2679:4;2671:6;2667:17;2632:66;:::i;:::-;2714:16;;;;;2449:287;-1:-1:-1;;2449:287:124:o;2741:400::-;2892:3;2930:6;2924:13;2946:66;3005:6;3000:3;2993:4;2985:6;2981:17;2946:66;:::i;:::-;3089:14;;3082:22;3077:3;3073:32;3034:16;;;;3059:47;;;3133:1;3122:13;;2741:400;-1:-1:-1;;2741:400:124:o;3146:184::-;3198:77;3195:1;3188:88;3295:4;3292:1;3285:15;3319:4;3316:1;3309:15;3335:168;3408:9;;;3439;;3456:15;;;3450:22;;3436:37;3426:71;;3477:18;;:::i;3508:195::-;3547:3;3578:66;3571:5;3568:77;3565:103;;3648:18;;:::i;:::-;-1:-1:-1;3695:1:124;3684:13;;3508:195::o;3708:337::-;3895:42;3887:6;3883:55;3872:9;3865:74;3975:2;3970;3959:9;3955:18;3948:30;3846:4;3995:44;4035:2;4024:9;4020:18;4012:6;3995:44;:::i;:::-;3987:52;3708:337;-1:-1:-1;;;;3708:337:124:o;4050:128::-;4117:9;;;4138:11;;;4135:37;;;4152:18;;:::i;4183:184::-;4235:77;4232:1;4225:88;4332:4;4329:1;4322:15;4356:4;4353:1;4346:15","linkReferences":{}},"methodIdentifiers":{"getStorageAt(uint256,uint256)":"5624b25b","simulateDelegatecall(address,bytes)":"f84436bd","simulateDelegatecallInternal(address,bytes)":"43218e19"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecallInternal\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getStorageAt(uint256,uint256)\":{\"details\":\"Reads `length` bytes of storage in the currents contract\",\"params\":{\"length\":\"- the number of words (32 bytes) of data to read\",\"offset\":\"- the offset in the current contract's storage in words to start reading from\"},\"returns\":{\"_0\":\"the bytes that were read.\"}},\"simulateDelegatecall(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}},\"simulateDelegatecallInternal(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Returns encoded result as revert message concatenated with the success flag of the inner call as a last byte.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}}},\"title\":\"StorageAccessible - generic base contract that allows callers to access all internal storage.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":\"StorageAccessible\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol\":{\"keccak256\":\"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5\",\"dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStorageAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateDelegatecall","outputs":[{"internalType":"bytes","name":"response","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateDelegatecallInternal","outputs":[{"internalType":"bytes","name":"response","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"getStorageAt(uint256,uint256)":{"details":"Reads `length` bytes of storage in the currents contract","params":{"length":"- the number of words (32 bytes) of data to read","offset":"- the offset in the current contract's storage in words to start reading from"},"returns":{"_0":"the bytes that were read."}},"simulateDelegatecall(address,bytes)":{"details":"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}},"simulateDelegatecallInternal(address,bytes)":{"details":"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Returns encoded result as revert message concatenated with the success flag of the inner call as a last byte.","params":{"calldataPayload":"Calldata that should be sent to the target contract (encoded method name and arguments).","targetContract":"Address of the contract containing the code to execute."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":"StorageAccessible"},"evmVersion":"paris","libraries":{}},"sources":{"lib/cowprotocol/src/contracts/mixins/StorageAccessible.sol":{"keccak256":"0xd783fd67c7b5fc34a56472803cfee2ccaf428d807765df877357983448060d97","urls":["bzz-raw://e5cc6b42ca8f0a0ed3739ab1f739322ff70b0b67d523cb742921c79c583137c5","dweb:/ipfs/QmeGtzZ4aMwQunUmNMGxR2tc3yaGR5FaYhRMCN6aJXF6hq"],"license":"LGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/submit_SingleOrder.s.sol/SubmitSingleOrder.json b/out/submit_SingleOrder.s.sol/SubmitSingleOrder.json new file mode 100644 index 0000000..9bafd57 --- /dev/null +++ b/out/submit_SingleOrder.s.sol/SubmitSingleOrder.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b50610af68061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012391906107e3565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf906101a99060040160208082526004908201527f5341464500000000000000000000000000000000000000000000000000000000604082015260600190565b602060405180830381865afa1580156101c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ea91906107fc565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf906102709060040160208082526004908201527f5457415000000000000000000000000000000000000000000000000000000000604082015260600190565b602060405180830381865afa15801561028d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b191906107fc565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4d504f5341424c455f434f570000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa15801561034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037191906107fc565b60408051610140810182526001808252600260208301526000828401819052600a6060840181905260808401929092524260a084015260c0830191909152607860e08301526101008201527f320530c667bc337342614750b6b7ab2430bdd290c9fff11cdfebd685072ab17161012082015290517fce817d470000000000000000000000000000000000000000000000000000000081526004810187905291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b5050505061065f8260008473ffffffffffffffffffffffffffffffffffffffff16636bfae1ca60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020016040516020016104e0907f5457415000000000000000000000000000000000000000000000000000000000815260040190565b6040516020818303038152906040528051906020012081526020018760405160200161050c9190610839565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815291525161054d919060019060240161095c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290517fffa18649000000000000000000000000000000000000000000000000000000008152600481018b9052909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801561061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063e91906107fc565b73ffffffffffffffffffffffffffffffffffffffff8a1694939291906106e9565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff838116602083015260008284018190527f010000000000000000000000000000000000000000000000000000000000000060608401528351604181850301815260618401948590527f6a7612020000000000000000000000000000000000000000000000000000000090945290891691636a76120291610796918a918a918a918a9181908190819081908d906065016109b4565b6020604051808303816000875af11580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d99190610a9e565b5050505050505050565b6000602082840312156107f557600080fd5b5051919050565b60006020828403121561080e57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461083257600080fd5b9392505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101408101602083015161087f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516108a7604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b6000815180845260005b8181101561091e57602081850181015186830182015201610902565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6040815273ffffffffffffffffffffffffffffffffffffffff83511660408201526020830151606082015260006040840151606060808401526109a260a08401826108f8565b91505082151560208301529392505050565b600061014073ffffffffffffffffffffffffffffffffffffffff8d1683528b60208401528060408401526109ea8184018c6108f8565b905060028a10610a23577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8960608401528860808401528760a08401528660c0840152610a5d60e084018773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff8516610100840152828103610120840152610a8d81856108f8565b9d9c50505050505050505050505050565b600060208284031215610ab057600080fd5b8151801515811461083257600080fdfea26469706673582212206cb8da85e462acf8e1db9ac9f0d61a1d6848efb5e90f16284bfeb0efcb3eaab064736f6c63430008130033","sourceMap":"955:1478:85:-:0;;;3288:44:30;;;3328:4;-1:-1:-1;;3288:44:30;;;;;;;;758:28:28;;;;;;;;;;;955:1478:85;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610066565b005b600c546100529060ff1681565b604051901515815260200160405180910390f35b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b45590000000000000000000000000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156100ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012391906107e3565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf906101a99060040160208082526004908201527f5341464500000000000000000000000000000000000000000000000000000000604082015260600190565b602060405180830381865afa1580156101c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ea91906107fc565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf906102709060040160208082526004908201527f5457415000000000000000000000000000000000000000000000000000000000604082015260600190565b602060405180830381865afa15801561028d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b191906107fc565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4d504f5341424c455f434f570000000000000000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa15801561034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037191906107fc565b60408051610140810182526001808252600260208301526000828401819052600a6060840181905260808401929092524260a084015260c0830191909152607860e08301526101008201527f320530c667bc337342614750b6b7ab2430bdd290c9fff11cdfebd685072ab17161012082015290517fce817d470000000000000000000000000000000000000000000000000000000081526004810187905291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b5050505061065f8260008473ffffffffffffffffffffffffffffffffffffffff16636bfae1ca60405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020016040516020016104e0907f5457415000000000000000000000000000000000000000000000000000000000815260040190565b6040516020818303038152906040528051906020012081526020018760405160200161050c9190610839565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815291525161054d919060019060240161095c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290517fffa18649000000000000000000000000000000000000000000000000000000008152600481018b9052909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801561061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063e91906107fc565b73ffffffffffffffffffffffffffffffffffffffff8a1694939291906106e9565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff838116602083015260008284018190527f010000000000000000000000000000000000000000000000000000000000000060608401528351604181850301815260618401948590527f6a7612020000000000000000000000000000000000000000000000000000000090945290891691636a76120291610796918a918a918a918a9181908190819081908d906065016109b4565b6020604051808303816000875af11580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d99190610a9e565b5050505050505050565b6000602082840312156107f557600080fd5b5051919050565b60006020828403121561080e57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461083257600080fd5b9392505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101408101602083015161087f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516108a7604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525092915050565b6000815180845260005b8181101561091e57602081850181015186830182015201610902565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6040815273ffffffffffffffffffffffffffffffffffffffff83511660408201526020830151606082015260006040840151606060808401526109a260a08401826108f8565b91505082151560208301529392505050565b600061014073ffffffffffffffffffffffffffffffffffffffff8d1683528b60208401528060408401526109ea8184018c6108f8565b905060028a10610a23577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8960608401528860808401528760a08401528660c0840152610a5d60e084018773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff8516610100840152828103610120840152610a8d81856108f8565b9d9c50505050505050505050505050565b600060208284031215610ab057600080fd5b8151801515811461083257600080fdfea26469706673582212206cb8da85e462acf8e1db9ac9f0d61a1d6848efb5e90f16284bfeb0efcb3eaab064736f6c63430008130033","sourceMap":"955:1478:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:1404;;;:::i;:::-;;758:28:28;;;;;;;;;;;;179:14:122;;172:22;154:41;;142:2;127:18;758:28:28;;;;;;;1027:1404:85;1090:25;;;;;408:2:122;1090:25:85;;;390:21:122;447:2;427:18;;;420:30;486:13;466:18;;;459:41;1061:26:85;;1090:10;;;;517:18:122;;1090:25:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1151:21;;;;;1061:54;;-1:-1:-1;1126:9:85;;1151:13;;;;:21;;;;937:2:122;919:21;;;976:1;956:18;;;949:29;1014:6;1009:2;994:18;;987:34;1053:2;1038:18;;735:327;1151:21:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1201;;;;;1126:48;;-1:-1:-1;1184:9:85;;1201:13;;;;:21;;;;1587:2:122;1569:21;;;1626:1;1606:18;;;1599:29;1664:6;1659:2;1644:18;;1637:34;1703:2;1688:18;;1385:327;1201:21:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1277:31;;;;;1919:2:122;1277:31:85;;;1901:21:122;1958:2;1938:18;;;1931:30;1997:16;1977:18;;;1970:44;1184:39:85;;-1:-1:-1;1233:27:85;;1277:13;;;;2031:18:122;;1277:31:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1354:353;;;;;;;;1409:1;1354:353;;;1451:1;1354:353;;;;-1:-1:-1;1354:353:85;;;;;;1518:2;1354:353;;;;;;;;;;;;;1567:15;1354:353;;;;;;;;;;;1618:3;1354:353;;;;;;;;1665:31;1354:353;;;;1718:37;;;;;;;;2206:25:122;;;1233:76:85;;-1:-1:-1;1354:353:85;1718:17;;;;2179:18:122;;1718:37:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1824:571;1869:13;1897:1;1944:13;:20;;;2004:249;;;;;;;;2098:4;2004:249;;;;;;2145:24;;;;;;2456:6:122;2444:19;;2488:1;2479:11;;2242:254;2145:24:85;;;;;;;;;;;;;2135:35;;;;;;2004:249;;;;2220:9;2209:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2004:249;;1912:399;;;;2275:4;;1912:399;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:27;;;;;;;;2206:25:122;;;1912:399:85;;-1:-1:-1;;;2358:7:85;;;;2179:18:122;;2358:27:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1824:23;;;;:571;;;;:23;:571::i;:::-;317:28:27;309:37;;2406:16:85;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1051:1380;;;;;1027:1404::o;2891:436:119:-;3115:67;;;3132:23;;;;3115:67;;;4932:19:122;3090:22:119;4967:12:122;;;4960:28;;;3169:12:119;5004::122;;;4997:101;3115:67:119;;;;;;;;;5114:12:122;;;3115:67:119;;;;3228:92;;;;:20;;;;;;:92;;3249:2;;3253:5;;3260:4;;3266:9;;3090:22;;;;;;;;3115:67;;3228:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3080:247;2891:436;;;;;;:::o;546:184:122:-;616:6;669:2;657:9;648:7;644:23;640:32;637:52;;;685:1;682;675:12;637:52;-1:-1:-1;708:16:122;;546:184;-1:-1:-1;546:184:122:o;1067:313::-;1137:6;1190:2;1178:9;1169:7;1165:23;1161:32;1158:52;;;1206:1;1203;1196:12;1158:52;1238:9;1232:16;1288:42;1281:5;1277:54;1270:5;1267:65;1257:93;;1346:1;1343;1336:12;1257:93;1369:5;1067:313;-1:-1:-1;;;1067:313:122:o;2641:986::-;2861:13;;2586:42;2575:54;2563:67;;2821:3;2806:19;;2933:4;2925:6;2921:17;2915:24;2948:62;3004:4;2993:9;2989:20;2975:12;2586:42;2575:54;2563:67;;2501:135;2948:62;;3059:4;3051:6;3047:17;3041:24;3074:64;3132:4;3121:9;3117:20;3101:14;2586:42;2575:54;2563:67;;2501:135;3074:64;;3194:4;3186:6;3182:17;3176:24;3169:4;3158:9;3154:20;3147:54;3257:4;3249:6;3245:17;3239:24;3232:4;3221:9;3217:20;3210:54;3320:4;3312:6;3308:17;3302:24;3295:4;3284:9;3280:20;3273:54;3383:4;3375:6;3371:17;3365:24;3358:4;3347:9;3343:20;3336:54;3446:4;3438:6;3434:17;3428:24;3421:4;3410:9;3406:20;3399:54;3472:6;3532:2;3524:6;3520:15;3514:22;3509:2;3498:9;3494:18;3487:50;;3556:6;3616:2;3608:6;3604:15;3598:22;3593:2;3582:9;3578:18;3571:50;;2641:986;;;;:::o;3632:481::-;3673:3;3711:5;3705:12;3738:6;3733:3;3726:19;3763:1;3773:162;3787:6;3784:1;3781:13;3773:162;;;3849:4;3905:13;;;3901:22;;3895:29;3877:11;;;3873:20;;3866:59;3802:12;3773:162;;;3777:3;3980:1;3973:4;3964:6;3959:3;3955:16;3951:27;3944:38;4102:4;4032:66;4027:2;4019:6;4015:15;4011:88;4006:3;4002:98;3998:109;3991:116;;;3632:481;;;;:::o;4118:626::-;4351:2;4340:9;4333:21;4409:42;4400:6;4394:13;4390:62;4385:2;4374:9;4370:18;4363:90;4509:4;4501:6;4497:17;4491:24;4484:4;4473:9;4469:20;4462:54;4314:4;4563:2;4555:6;4551:15;4545:22;4604:4;4598:3;4587:9;4583:19;4576:33;4626:51;4672:3;4661:9;4657:19;4643:12;4626:51;:::i;:::-;4618:59;;;4729:6;4722:14;4715:22;4708:4;4697:9;4693:20;4686:52;4118:626;;;;;:::o;5137:1325::-;5570:4;5599:3;5641:42;5633:6;5629:55;5618:9;5611:74;5721:6;5716:2;5705:9;5701:18;5694:34;5764:2;5759;5748:9;5744:18;5737:30;5790:44;5830:2;5819:9;5815:18;5807:6;5790:44;:::i;:::-;5776:58;;5864:1;5856:6;5853:13;5843:201;;5900:77;5897:1;5890:88;6001:4;5998:1;5991:15;6029:4;6026:1;6019:15;5843:201;6080:6;6075:2;6064:9;6060:18;6053:34;6124:6;6118:3;6107:9;6103:19;6096:35;6168:6;6162:3;6151:9;6147:19;6140:35;6212:6;6206:3;6195:9;6191:19;6184:35;6228:55;6278:3;6267:9;6263:19;6255:6;2586:42;2575:54;2563:67;;2501:135;6228:55;2586:42;2575:54;;6342:3;6327:19;;2563:67;6396:9;6388:6;6384:22;6378:3;6367:9;6363:19;6356:51;6424:32;6449:6;6441;6424:32;:::i;:::-;6416:40;5137:1325;-1:-1:-1;;;;;;;;;;;;;5137:1325:122:o;6467:277::-;6534:6;6587:2;6575:9;6566:7;6562:23;6558:32;6555:52;;;6603:1;6600;6593:12;6555:52;6635:9;6629:16;6688:5;6681:13;6674:21;6667:5;6664:32;6654:60;;6710:1;6707;6700:12","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"mfw78 \",\"kind\":\"dev\",\"methods\":{},\"title\":\"Submit a single order to ComposableCoW\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/submit_SingleOrder.s.sol\":\"SubmitSingleOrder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/cowprotocol/src/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140\",\"dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol\":{\"keccak256\":\"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958\",\"dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2\"]},\"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol\":{\"keccak256\":\"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82\",\"dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693\",\"dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/safe/contracts/Safe.sol\":{\"keccak256\":\"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119\",\"dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9\"]},\"lib/safe/contracts/base/Executor.sol\":{\"keccak256\":\"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c\",\"dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp\"]},\"lib/safe/contracts/base/FallbackManager.sol\":{\"keccak256\":\"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e\",\"dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV\"]},\"lib/safe/contracts/base/GuardManager.sol\":{\"keccak256\":\"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64\",\"dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx\"]},\"lib/safe/contracts/base/ModuleManager.sol\":{\"keccak256\":\"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d\",\"dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz\"]},\"lib/safe/contracts/base/OwnerManager.sol\":{\"keccak256\":\"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a\",\"dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK\"]},\"lib/safe/contracts/common/Enum.sol\":{\"keccak256\":\"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34\",\"dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo\"]},\"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol\":{\"keccak256\":\"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9\",\"dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g\"]},\"lib/safe/contracts/common/SecuredTokenTransfer.sol\":{\"keccak256\":\"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3\",\"dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N\"]},\"lib/safe/contracts/common/SelfAuthorized.sol\":{\"keccak256\":\"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3\",\"dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu\"]},\"lib/safe/contracts/common/SignatureDecoder.sol\":{\"keccak256\":\"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80\",\"dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4\"]},\"lib/safe/contracts/common/Singleton.sol\":{\"keccak256\":\"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde\",\"dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo\"]},\"lib/safe/contracts/common/StorageAccessible.sol\":{\"keccak256\":\"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e\",\"dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ\"]},\"lib/safe/contracts/external/SafeMath.sol\":{\"keccak256\":\"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c\",\"dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x\"]},\"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol\":{\"keccak256\":\"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07\",\"dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH\"]},\"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol\":{\"keccak256\":\"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515\",\"dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV\"]},\"lib/safe/contracts/handler/HandlerContext.sol\":{\"keccak256\":\"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4\",\"dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF\"]},\"lib/safe/contracts/handler/TokenCallbackHandler.sol\":{\"keccak256\":\"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da\",\"dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu\"]},\"lib/safe/contracts/handler/extensible/ERC165Handler.sol\":{\"keccak256\":\"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060\",\"dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y\"]},\"lib/safe/contracts/handler/extensible/ExtensibleBase.sol\":{\"keccak256\":\"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9\",\"dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh\"]},\"lib/safe/contracts/handler/extensible/FallbackHandler.sol\":{\"keccak256\":\"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591\",\"dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM\"]},\"lib/safe/contracts/handler/extensible/MarshalLib.sol\":{\"keccak256\":\"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071\",\"dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew\"]},\"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol\":{\"keccak256\":\"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666\",\"dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W\"]},\"lib/safe/contracts/handler/extensible/TokenCallbacks.sol\":{\"keccak256\":\"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073\",\"dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV\"]},\"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"lib/safe/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89\",\"dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38\"]},\"lib/safe/contracts/interfaces/ISignatureValidator.sol\":{\"keccak256\":\"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25\",\"dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978\"]},\"lib/safe/contracts/libraries/MultiSend.sol\":{\"keccak256\":\"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3\",\"dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF\"]},\"lib/safe/contracts/libraries/SafeStorage.sol\":{\"keccak256\":\"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87\",\"dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc\"]},\"lib/safe/contracts/libraries/SignMessageLib.sol\":{\"keccak256\":\"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd\",\"dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC\"]},\"lib/safe/contracts/proxies/IProxyCreationCallback.sol\":{\"keccak256\":\"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099\",\"dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7\"]},\"lib/safe/contracts/proxies/SafeProxy.sol\":{\"keccak256\":\"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec\",\"dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP\"]},\"lib/safe/contracts/proxies/SafeProxyFactory.sol\":{\"keccak256\":\"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26\",\"dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh\"]},\"script/submit_SingleOrder.s.sol\":{\"keccak256\":\"0xdd3b2ef19982583e4bfc15e2134777a59a829bd34a42b112ca3f5364dc1d8404\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://412a74d2ee82ec5f93afd9f36662f592e0ea445c341e8ee988d2d54395a2e4d5\",\"dweb:/ipfs/QmSavivaBmMpofq1DABvnx3VHzAi5CepCSoPnRiV98SHWK\"]},\"src/BaseConditionalOrder.sol\":{\"keccak256\":\"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34\",\"dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo\"]},\"src/ComposableCoW.sol\":{\"keccak256\":\"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309\",\"dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns\"]},\"src/interfaces/IConditionalOrder.sol\":{\"keccak256\":\"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46\",\"dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu\"]},\"src/interfaces/ISwapGuard.sol\":{\"keccak256\":\"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900\",\"dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y\"]},\"src/interfaces/IValueFactory.sol\":{\"keccak256\":\"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de\",\"dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih\"]},\"src/types/twap/TWAP.sol\":{\"keccak256\":\"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08\",\"dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey\"]},\"src/types/twap/libraries/TWAPOrder.sol\":{\"keccak256\":\"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb\",\"dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh\"]},\"src/types/twap/libraries/TWAPOrderMathLib.sol\":{\"keccak256\":\"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9\",\"dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG\"]},\"src/vendored/CoWSettlement.sol\":{\"keccak256\":\"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840\",\"dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR\"]},\"test/libraries/SafeLib.t.sol\":{\"keccak256\":\"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52\",\"dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4\"]},\"test/libraries/TestAccountLib.t.sol\":{\"keccak256\":\"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c\",\"dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/submit_SingleOrder.s.sol":"SubmitSingleOrder"},"evmVersion":"paris","libraries":{}},"sources":{"lib/@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac","urls":["bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04","dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"],"license":"MIT"},"lib/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/cowprotocol/src/contracts/interfaces/IERC20.sol":{"keccak256":"0x2db02cc0e23db99d10cd21590425b714060a556bcfb934cb5ab3b80aef1610ba","urls":["bzz-raw://c05f8a21a244e6566a3e555028cebeebd1c38902f0cea2e9b014cc7becaf3140","dweb:/ipfs/QmTBY1GphjwAnY2nC9qKMwj5HeAUJMgFdo5YZcVxsVyqFb"],"license":"MIT"},"lib/cowprotocol/src/contracts/libraries/GPv2Interaction.sol":{"keccak256":"0x7b69b3d536c995e84a5fe4ec3dc63ddf01a3538f72ece83828e87aa90df33a7d","urls":["bzz-raw://7ba34b22f5b25cd6fecfd0d5e9b6077b36130a2cb4539b1311de0f328c226958","dweb:/ipfs/QmUURWvPbrZ6Z4iDv8Sa8soQCZyKZCsCcdMzgY9Jy5RNV2"],"license":"LGPL-3.0-or-later"},"lib/cowprotocol/src/contracts/libraries/GPv2Order.sol":{"keccak256":"0xb96efb76433446cf0ccb9f5bc926301a9c8bcbfd17dcd6a36a1e6207f5b436b2","urls":["bzz-raw://5ec097e17d3e47e16808a5246a99af7ef618bb58ccb61d7331bfca1929cbbd82","dweb:/ipfs/QmbH7rg5s5gdpa5KENMUXHyGBWJyQn6XEwv9JakRSCcv8n"],"license":"LGPL-3.0-or-later"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xd566affaba92598bcd059dcb3714a968aeedb365ec0d666815e8b38519e0f433","urls":["bzz-raw://2fb5f7a97d2a7a06e10c198b60f05e64176eb4ef306b72800c168e7a7ec51693","dweb:/ipfs/Qmcep4r7YEU3BwFJNTTxZsdCVzBYdtcVp8oDtmwLoZGRzP"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/safe/contracts/Safe.sol":{"keccak256":"0xbab2f7bec33283e349342e7b23f5191c678c64fe02065bac4f4f44fb3f5d2638","urls":["bzz-raw://f95884e85691d49ba3efb9b2a160466fed17377bfa92fc8bf5923f3c61e99119","dweb:/ipfs/QmQjhP9RnB3Cj3DNpWLzWqqvRdKBya6Efx6xzmRrwLqjm9"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/Executor.sol":{"keccak256":"0xf0be832e7529e92000544170a5529d73666a9b5e836b30c6f2ed6ef7d7d8c94a","urls":["bzz-raw://710022b40c9f78a5b55b97f6ce600e4834df2ddd36bf714974d953883c82d58c","dweb:/ipfs/QmbdJNKH5opevm7HxQKQAe6W7dQTgSHKa4nKvbUNGRcQQp"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/FallbackManager.sol":{"keccak256":"0x646b3088f15af8b4f71ac5eeffaa24ce0c1abed5f494f90368208b09e35d5165","urls":["bzz-raw://7975be46d228510c70659b18076aecb3b0e7331b4d3a162444304145143bdc6e","dweb:/ipfs/QmRRbZrWUnoky6pVo8zMUzCTsshR4sZ2FjR13s8vyAb8dV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/GuardManager.sol":{"keccak256":"0xedfc7c830ab35e52d1208986b253f3422c2f0ca68054c10819fb348fcc6ccf5d","urls":["bzz-raw://3ff8a4194d1160d2e23142937bc9d7eac7b6b553b1ee226390a0df07ebac1b64","dweb:/ipfs/QmSw8Y7z4TQrUTEosdWqcug7TUv9Tg1kxqMKHd7RuTnyzx"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/ModuleManager.sol":{"keccak256":"0xd71b0d56dce386fa6f67c51061face071b2c7b03ec535d68717e2538ec47113a","urls":["bzz-raw://30812896d9f57cae84a432c67fbb3007d566071ec203b2992f1c0f762722df0d","dweb:/ipfs/QmRyJ3JbsUwDQxQDTrqDDX4qNtVu7XiW8cD8WP5kgNJGGz"],"license":"LGPL-3.0-only"},"lib/safe/contracts/base/OwnerManager.sol":{"keccak256":"0xec9799093eb7a73461cd5e563198751ee222f956f754ea622a03fe953e515b2c","urls":["bzz-raw://5729c58b14e7b656c71dd3377e9519c0d34ef8c04851a9a21c3d62393e4fae7a","dweb:/ipfs/QmRRtfFpNqvdANny9TYBr8rA3HbT1egUCpb2uXALMHkVxK"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Enum.sol":{"keccak256":"0x4ff3008926a118e9f36e6747facc39dd13168e0d00f516888ae966ec20766453","urls":["bzz-raw://385929800d1c0f92eb165fcf37a9e28b395b17d8b74f74755654d3a096a0fc34","dweb:/ipfs/QmagieLuN2jrp2oJHFyZuyz65Sh1CcupnXSEKypGFS5Gvo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/NativeCurrencyPaymentFallback.sol":{"keccak256":"0x3ddcd4130c67326033dcf773d2d87d7147e3a8386993ea3ab3f1c38da406adba","urls":["bzz-raw://740a729397b6a0d903f4738a50e856d4e5039555024937b148d97529525dbfa9","dweb:/ipfs/QmQJuNVvHbkeJ6jjd75D8FsZBPXH6neoGBZdQgtsA82E7g"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SecuredTokenTransfer.sol":{"keccak256":"0x1eb8c3601538b73dd6a823ac4fca49bb8adc97d1302a936622156636c971eb05","urls":["bzz-raw://c26495b1fe9229ea17f90b70f295030880d629b9ea3016ea20b634983865f7b3","dweb:/ipfs/QmTc1UmKcynkKn8DeviLMuy6scxNvAVSdLoX4ndUtdEL9N"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SelfAuthorized.sol":{"keccak256":"0xfb0e176bb208e047a234fe757e2acd13787e27879570b8544547ac787feb5f13","urls":["bzz-raw://8e9a317f0c3c02ab1d6c38039bff2b3e0c97f4dc9d229d3d9149c1af1c5023b3","dweb:/ipfs/QmNcZjNChsuXF34T6f3Zu7i3tnqvKN4NyWBWZ4tXLH9kMu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/SignatureDecoder.sol":{"keccak256":"0x2a3baf0efa1585ddf2276505c6d34fa16f01cafff1288e40110d5e67fb459c7c","urls":["bzz-raw://00cdded3068b9051ee0a966f40926fbc57dbe7ef8bf4285db3740f9d50468c80","dweb:/ipfs/QmcP5hKmaRqBe7TpgoXtncZqsNKKdCCKxZgXoxEL4Nj5F4"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/Singleton.sol":{"keccak256":"0xcab7c6e5fb6d7295a9343f72fec26a2f632ddfe220a6f267b5c5a1eb2f9bce50","urls":["bzz-raw://dd1c31d5787ef590a60f6b0dbc74d09e6fe4d3ad2f0529940d662bf315521cde","dweb:/ipfs/QmSAS5DYrGksJe4cPQ4wLrveXa1CjxAuEiohcLpPG5h2bo"],"license":"LGPL-3.0-only"},"lib/safe/contracts/common/StorageAccessible.sol":{"keccak256":"0x2c5412a8f014db332322a6b24ee3cedce15dca17a721ae49fdef368568d4391e","urls":["bzz-raw://e775f267d3e60ebe452d9533f46a0eb1f1dc4593d1bcb553e86cea205a5f361e","dweb:/ipfs/QmQdYDHGQsiMx1AADWRhX7tduU9ycTzrT5q3zBWvphXzKZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/external/SafeMath.sol":{"keccak256":"0x5f856674d9be11344c5899deb43364e19baa75bc881cada4c159938270b2bd89","urls":["bzz-raw://351c66e5fe92c0a51f79d133521545dabdd3f756312a7b1428c1fc813c512a1c","dweb:/ipfs/QmdnrRmgef8SdamEU6fVEqFD5RQwXeDFTfQuZEfX2vxC4x"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/CompatibilityFallbackHandler.sol":{"keccak256":"0x3eee5c142041e92895d45f8e9acb9ac2203b0ac39418e8d2971e78bf0775bcf7","urls":["bzz-raw://6ca95ba88f388a206e14ea0ac2c4a2bb0b60b83a619d1dd3d61772588394fa07","dweb:/ipfs/QmbhhRhBP4n9TVLohTV4GtESeRsumrk4JduLG7DwbBrtxH"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/ExtensibleFallbackHandler.sol":{"keccak256":"0x7e511290dae21c9b1710c9250320d9b98ffd71c9501af354814485b58e1b64e9","urls":["bzz-raw://3e55ba23bde90d2cdd07baa7172ea41bdc1d638bc7b6eb5dce03189d86412515","dweb:/ipfs/QmbxH73sqooeQL8ehsP2FDoXhLBoPs3wr3nod6ZgJwVcFV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/HandlerContext.sol":{"keccak256":"0x3e105ebac003af9c8d34e3eed517ff0355d5f487e17478c85df0f225b04846f5","urls":["bzz-raw://657bec347d746453883c461a3d9a2275bf2b99625dcaef0960e1c0276c3d56c4","dweb:/ipfs/QmUGj8Tzs1CsmUf63LbTMK81EEGtYYnWKLGdHHtoYCd9CF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/TokenCallbackHandler.sol":{"keccak256":"0xc8fb9e60f5e561c7e4992a396e928344c278c2fbec8af65aebec44281542e7cb","urls":["bzz-raw://e197c9a628bdce9a1df8da8ba07733ce0e8b5496a28a22a370dec979104c79da","dweb:/ipfs/QmUx8YhmT22YZYEXp2bVNR91hSb9w5qjAkzGiFy6DRNpdu"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ERC165Handler.sol":{"keccak256":"0x4d562221e6645b6e79da99d2b322331617051fa90e06ec7ce3f9a6a87bae116c","urls":["bzz-raw://5a574dd50b9e9a594afda4a96701295e18a0054fcaf5083573ee80033b2da060","dweb:/ipfs/QmNQf5rfHqMCGKBcqZowz89JEZe8rjjoYEkySBy7oxwh4Y"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/ExtensibleBase.sol":{"keccak256":"0xe5b71121b0020728158ee60756982e74809f9d77cb294a6d65930bff09d84d15","urls":["bzz-raw://fd7fd2702b31fc8569a9986a476dd9fe9aa76624d0da6d832547f624426925f9","dweb:/ipfs/QmWjYGtW38Fnwvm8qFvoJYhz2nTuySGkHouwRF3eksd6Nh"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/FallbackHandler.sol":{"keccak256":"0x3020c96c812548a2bf6413168ee21033638a36736b695909f7cf54277beefd76","urls":["bzz-raw://6ffdf49fb516791f4cad239fc780bb5d9934bb06744b99b0fbc067f31ad13591","dweb:/ipfs/QmPXwVoDhnhnQFSxEiHDZYRQJ5ozAECSFrUHMTjwAJ1LuM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/MarshalLib.sol":{"keccak256":"0x36eacc47b1ce7697e679c1b5c0d3a86d8f46a0436b666f86e88df04765cde5c1","urls":["bzz-raw://7097bfb174ea424ef55f9a5b55f4a9857f7368cdd3061888f5ffb3e29503f071","dweb:/ipfs/QmRPvAvMdGRuh8AjePtamBGUU55p1tSP8ZHUUMfxWgi1ew"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/SignatureVerifierMuxer.sol":{"keccak256":"0x51e8dad81059527f9b6b6827d742a0fbc0960c66e364dd1e67c8f151970c6ee4","urls":["bzz-raw://b368a4eb15d50487986db1543a5c786324a4d0de680a421d131e21c25459f666","dweb:/ipfs/QmVca3J2JBEZtxW3uNMvYc9ugQH24CqantLnVzKcZwG71W"],"license":"LGPL-3.0-only"},"lib/safe/contracts/handler/extensible/TokenCallbacks.sol":{"keccak256":"0x549d737c3eef66cec2a858b34dce4db42e56d8f053635742230873e6049e81ed","urls":["bzz-raw://f03f130c36be396895acfa7891ccca36725c6a6496085d88fc33071e00093073","dweb:/ipfs/QmfLfenjQ1gWnotx5Vdda1kJBqjnCi53bGNqyZ5cN6wxXV"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/IERC165.sol":{"keccak256":"0x779ed3893a8812e383670b755f65c7727e9343dadaa4d7a4aa7f4aa35d859fdb","urls":["bzz-raw://bb2039e1459ace1e68761e873632fc339866332f9f5ecb7452a0bc3a3b847e89","dweb:/ipfs/QmYXvDQXJnDkXFvsvKLyZXaAv4x42qvtbtmwHftP4RKX38"],"license":"LGPL-3.0-only"},"lib/safe/contracts/interfaces/ISignatureValidator.sol":{"keccak256":"0x2459cb3ed73ecb80e1e7a6508d09a58cc59570b049f77042f669dedfcc5f6457","urls":["bzz-raw://3c4a1371948b11f78171bc4ae4fd169a1eec11e5c4b273eb2c54bc030a1aae25","dweb:/ipfs/QmPuztatXZYVS65n8YbCyccJFZYPP6zQfBQ8tTY27pB978"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/MultiSend.sol":{"keccak256":"0x030bc8f4195cc8cba16efacba3da6870188af2d4b44d739de5d25e01e1473f9f","urls":["bzz-raw://e5a332517a4c7f249ba69f98c093cb61ffe9e1c059699c327c6e2548ac9c7bd3","dweb:/ipfs/QmZHu8bW9cG7EyAzhq7VxrTx6AZnQ5CUL6bSwvM5aUwhQF"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SafeStorage.sol":{"keccak256":"0xae0c704f3e4ec6b1436bbbd10b153feaa665ac36e556ccc4f2155e4c02f5c46a","urls":["bzz-raw://f2c67b22791022356f5ca85533ecdda740aa8d5c9ed263d0c2761f2560dd1b87","dweb:/ipfs/QmYf6gm89StvSTgZGR83UgSmUgJGjhGbBRRNvmxwywfiMc"],"license":"LGPL-3.0-only"},"lib/safe/contracts/libraries/SignMessageLib.sol":{"keccak256":"0x012c0c71e1bd8a1f82c0668151d5ff9dae07ab37098cd4eafd2e5099764891c3","urls":["bzz-raw://cdc484c399f00913f29280f8c86e2f8b886dd42de95d9ea0c572847b47a4e4dd","dweb:/ipfs/QmaUDZHn56ECGbkAWiBXxsvJ2dYBZe745h34svZ7NcSssC"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/IProxyCreationCallback.sol":{"keccak256":"0xf5410c842c1bbff96a2047b31f5437a9dc5183d004ab1fc9f952220f11379602","urls":["bzz-raw://0ac1fa0c7d6fc683384a3ce0b328c66adcc53b6a3e59d3b67c62404dd57c3099","dweb:/ipfs/QmcVvxtcjZqyQwQcU4cPU4SZZ2LEahsmVWgJWGh5n8EHa7"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxy.sol":{"keccak256":"0x5dccbe86285c1d4c4b2fed0ae8007620c3186d22411f43feecfbf8a028e5c7e2","urls":["bzz-raw://a1a02d01a92895110505e141d05b0924ea457a25b89a161f0aeedf6b5cb41aec","dweb:/ipfs/QmYWEsFbWwtrVvEF9MNQtf4X3Qt13dAE8o44tEyAS9jmKP"],"license":"LGPL-3.0-only"},"lib/safe/contracts/proxies/SafeProxyFactory.sol":{"keccak256":"0xdc68ce6d07d02723fcdde9f115c976d78bc599667b4f9d08e6cda50f51949533","urls":["bzz-raw://0389c45311e383f0a27a928594341da67f061bf88795aafdbfb5e8449416fc26","dweb:/ipfs/QmZXmXReN6uro3RAbh661G6LqfMEMeaLKRVoeJr5nx1tnh"],"license":"LGPL-3.0-only"},"script/submit_SingleOrder.s.sol":{"keccak256":"0xdd3b2ef19982583e4bfc15e2134777a59a829bd34a42b112ca3f5364dc1d8404","urls":["bzz-raw://412a74d2ee82ec5f93afd9f36662f592e0ea445c341e8ee988d2d54395a2e4d5","dweb:/ipfs/QmSavivaBmMpofq1DABvnx3VHzAi5CepCSoPnRiV98SHWK"],"license":"GPL-3.0"},"src/BaseConditionalOrder.sol":{"keccak256":"0x8b429a011579b3d84df3bb3135b3299054790018220666befa9ab5af24f49e8f","urls":["bzz-raw://a30f0535cf7fc4fabc42b83a04bd687b8e989ae8d0c3f6db63b69504c15a7a34","dweb:/ipfs/QmSeKTQWEx74SV6hrdX3sGLV6L9MF8fPPqoyyvdB4Kt3bo"],"license":"MIT"},"src/ComposableCoW.sol":{"keccak256":"0x9d96633422c6efc31b5fa2e2eb2281193622af6b60c7018d8e762946842b7b39","urls":["bzz-raw://35d7af15ab45e7070c3fa68008670690725c55f782903f4a3f62aa89012e5309","dweb:/ipfs/QmUzRq7NcL2oXxmr8cyRD3dZZ9dLjsXTsCaJVWPeDX6Vns"],"license":"GPL-3.0"},"src/interfaces/IConditionalOrder.sol":{"keccak256":"0x29f7d8b717e26ae86bda6ac079f55d547a0ba20cafb0968a02a4f1ac7db1ed4d","urls":["bzz-raw://a25eb31dc925669aca85906dd6e6f82c332277be82eeee3409c77dee9d62fc46","dweb:/ipfs/QmQAmKZCJzKZsv6PmytPaerFbDaEHPMHojBSbLhLVBRcuu"],"license":"GPL-3.0"},"src/interfaces/ISwapGuard.sol":{"keccak256":"0xac211fb24463a9c04a05bb58fe42d9bea10e58fe9ca35e7f544868eeb5972339","urls":["bzz-raw://3ce2a180c5368c6807aecafb242675476bbc653ac72b3bd727db3467efe8b900","dweb:/ipfs/QmWzTqMQCuvX5Zpn2sjxYUS9o3upsip4yNvwCMQGbXAk6Y"],"license":"GPL-3.0"},"src/interfaces/IValueFactory.sol":{"keccak256":"0x3304ef8a0a1727258ac8278bf5426daeac37ece4653eaaff87b15143814a8122","urls":["bzz-raw://9934d278069dd9474065777833a81e65af227b85d350b6c1f012b812101be9de","dweb:/ipfs/QmcMBdvY7wLs92FCyutDGQGtHnYryjnaykREvDNBNM8Yih"],"license":"GPL-3.0"},"src/types/twap/TWAP.sol":{"keccak256":"0xb90a567cb179c733a2cb04a33857c1251ba9862c34520047a55291aa04ac9cb1","urls":["bzz-raw://803308dc1e6789cbaad63831efacfd88b7bec0829ef3e6baf64d441ebd6f9e08","dweb:/ipfs/QmV7vxCwLX8nwUTU7kddrKjWtJxhPbAhpEnGiCbH3fe1Ey"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrder.sol":{"keccak256":"0x7f36efb6cf13d6cccc1fbda374fc4f96d79581eb56c2754eca209116ab700920","urls":["bzz-raw://4617c473d43ad069d7ff404a0c541c80cf4d0ada9504884d57162effe8e452cb","dweb:/ipfs/QmdHDeAS69YGmhX71da7Yw6CeQgGTjh7ob3dNknnoGyhMh"],"license":"GPL-3.0"},"src/types/twap/libraries/TWAPOrderMathLib.sol":{"keccak256":"0x9cb5263a1b8689b6ff59b9bcd14de0d031d8ed7efef56080f32b80c6f15e8d68","urls":["bzz-raw://d0411cab6f65fc3ab6415f9009d6a1ba0eda0348c66c09a9937fb261cc4c18a9","dweb:/ipfs/QmSdo9dtkteSATZbd8SJcE4M3bLiFZjebHhSsPmV8NZhfG"],"license":"GPL-3.0"},"src/vendored/CoWSettlement.sol":{"keccak256":"0x4e4e317b24017cd87eb11d16368b8c06ec19306d31946c330a86f9f136df38d7","urls":["bzz-raw://34b9b2fc2c89e60497457cd812da9c53718c15ddfbf70f6e11832d22092c1840","dweb:/ipfs/QmYFzaynWZfdpmFRf2dZrQ32Ep53AtQDd5fTE3a89xVkaR"],"license":"MIT"},"test/libraries/SafeLib.t.sol":{"keccak256":"0x58495cf250d0de3ebef0b7516a61207b7a08942d25187a889ee46931a5047a35","urls":["bzz-raw://ea524df2b48cae29a60080490d3ee42f369e064ac28dd78dcf00b47aeec76d52","dweb:/ipfs/QmXzdHC78e6EVTGJSDxtKsjHqaFDGLJyNALCKUYdQDDBG4"],"license":"GPL-3.0"},"test/libraries/TestAccountLib.t.sol":{"keccak256":"0x09d3b4eabab8125d3cc1abaa86bfebe04545972c2a12c62a6ed9bedabef07c96","urls":["bzz-raw://af9a65f26bafb1c90ee17d74992859d0a45c5baf02771878660cfab6c063175c","dweb:/ipfs/QmVWH8gcWTGsEd1goFwTobwhcFkoGeuqjFG2N7fKFEkeng"],"license":"GPL-3.0"}},"version":1},"id":85} \ No newline at end of file diff --git a/out/test.sol/DSTest.json b/out/test.sol/DSTest.json new file mode 100644 index 0000000..aa32f2c --- /dev/null +++ b/out/test.sol/DSTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b5061029b8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea26469706673582212205f81e106ed33a5e4725cf1a87fd84ad79611512da0eaffa7fe2d64b19721a64c64736f6c63430008130033","sourceMap":"715:15442:26:-:0;;;1572:26;;;-1:-1:-1;;1572:26:26;1594:4;1572:26;;;715:15442;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261016191610230565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb9190610243565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061022860048301846101c4565b949350505050565b600061023c82846101c4565b9392505050565b60006020828403121561025557600080fd5b8151801515811461023c57600080fdfea26469706673582212205f81e106ed33a5e4725cf1a87fd84ad79611512da0eaffa7fe2d64b19721a64c64736f6c63430008130033","sourceMap":"715:15442:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:124;;172:22;154:41;;142:2;127:18;1819:584:26;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:26;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:74:124;;;2221:17:26;470:18:124;;;463:34;2196:43:26;;;;;;;;;353:18:124;;;2196:43:26;;;-1:-1:-1;;1671:64:26;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:26:o;508:322:124:-;549:3;587:5;581:12;611:1;621:128;635:6;632:1;629:13;621:128;;;732:4;717:13;;;713:24;;707:31;694:11;;;687:52;650:12;621:128;;;-1:-1:-1;804:1:124;768:16;;793:13;;;-1:-1:-1;768:16:124;;508:322;-1:-1:-1;508:322:124:o;835:324::-;1032:66;1024:6;1020:79;1015:3;1008:92;990:3;1116:37;1150:1;1145:3;1141:11;1133:6;1116:37;:::i;:::-;1109:44;835:324;-1:-1:-1;;;;835:324:124:o;1164:189::-;1293:3;1318:29;1343:3;1335:6;1318:29;:::i;:::-;1311:36;1164:189;-1:-1:-1;;;1164:189:124:o;1358:277::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1526:9;1520:16;1579:5;1572:13;1565:21;1558:5;1555:32;1545:60;;1601:1;1598;1591:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/lib/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/lib/ds-test/src/test.sol":"DSTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"}},"version":1},"id":26} \ No newline at end of file diff --git a/out/test.sol/Test.json b/out/test.sol/Test.json new file mode 100644 index 0000000..07c1898 --- /dev/null +++ b/out/test.sol/Test.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Test.sol\":\"Test\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@openzeppelin/=lib/@openzeppelin/\",\":cowprotocol/=lib/cowprotocol/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/@openzeppelin/contracts/\",\":safe/=lib/safe/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749\",\"dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363\",\"dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af\",\"dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17\",\"dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab\",\"dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c\",\"dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef\",\"dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88\",\"dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=lib/@openzeppelin/","cowprotocol/=lib/cowprotocol/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/@openzeppelin/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/murky/lib/openzeppelin-contracts/","openzeppelin/=lib/@openzeppelin/contracts/","safe/=lib/safe/contracts/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Test.sol":"Test"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x4c1915908e867ed8ed9fe731dff0e1d4980f5a11a1fd1894f2800b2ae2070154","urls":["bzz-raw://c9d7f9295364406115e820a14be670e54603f00fc9474093613409743db53749","dweb:/ipfs/QmNjUUo9DK6xnfLjXYPc3qUznJv2PmSbaEXZCyyGRf5v5V"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x609e3a00319169988cc8272e837f350a9ba77cf8f8f62e4897a8e4a8a5f0fb27","urls":["bzz-raw://b24435e35ba5b080ebd6e8976c23fb735c7212d042be8462ffd2ea50c5250363","dweb:/ipfs/QmPeVvN7FS4oMmCuYAeRdZihTfrG4tA7Vvunuvv59a6wre"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xdb05fd11858f232b8b5c6c9175229bdd061c277c34f13b0bdc64d333bcbd2617","urls":["bzz-raw://08ae865564d9c1fa1012b61db77a2da2844ac1ae0a216b16c9fe9ab65ddf80af","dweb:/ipfs/QmfFfmkjb2Qfc5dPJvwQgjTMbeQ12dTPFeAQ8Gb944U44g"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x097b75f7171af89f433407e040d11b22fc26e2fe03793c2cfe18cad390d7af8b","urls":["bzz-raw://19d1dca7b398e517499ffa65ad44df69cdd016f37dc57e2d07d50279d3ddee17","dweb:/ipfs/QmfMFR25367GB5PoBi1KZxWs1hZcJtC3eANiioG3dKj8ah"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x3c536209b4d4e1879adc4d91b12e237985f0f8f91e71828dacd8fca3bdf2fa99","urls":["bzz-raw://65adfc61088d242dbab8faa738d104005531e3a52ed993329b54fa7ee45e53ab","dweb:/ipfs/QmP1d4thtELTT2vup4XmrCSKXZ91Eq756pgKq1z5hq2NGP"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x6584855fecbe5b6a9f8ebdb26b37c58532c5bc5cc6e1737dfa7c8a045087be55","urls":["bzz-raw://40a35a4d292b4fed02e11d5f25fb474f10a7c4eb99f75b5383dc23fcb6e55d3c","dweb:/ipfs/QmYZ2nz1EmNh4xLWf4YybZoa1Da1z3Wq3w4pneMhkouMi4"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xdd9f518aade851117d3ca3122cae6ed413a8b8355d43d69db336e94da3214a96","urls":["bzz-raw://939ede17edec5c78176379839f4c68851b1316e8f5789efb2f01cbdae09b88ef","dweb:/ipfs/QmYiBBb7Nyuse7HoEFkCeauUwcpef9S33ozZYDqXCEXEtH"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0xcd5706f5a7025825d9fd389c89b49bf571f9abaea8a062dc4048320b5b43bf46","urls":["bzz-raw://c066485a7d4bd18d44efb4c89274b0959e8066b9a480383a2ce07d7f31555f88","dweb:/ipfs/QmckeYfA5FtAjcxaytq69Dpj6uY57tbQ61kNPPxXi9kgbW"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":39} \ No newline at end of file diff --git a/src/types/twap/TWAP.sol b/src/types/twap/TWAP.sol index ad4f83b..8e9fdf1 100644 --- a/src/types/twap/TWAP.sol +++ b/src/types/twap/TWAP.sol @@ -16,6 +16,16 @@ import {TWAPOrder} from "./libraries/TWAPOrder.sol"; /// @dev The order is not within the TWAP bundle's span. string constant NOT_WITHIN_SPAN = "not within span"; +/// @dev Polling hint reason: current block is before `t0`, the first part's start. +string constant BEFORE_FIRST_PART = "before first part"; + +/// @dev Polling hint reason: every part of the TWAP has been settled / passed. +string constant ALL_PARTS_SETTLED = "all parts settled"; + +/// @dev Polling hint reason: in-progress TWAP, currently between parts (current +/// part's `validTo` is in the past and the next part has not started yet). +string constant BETWEEN_PARTS = "between parts"; + /** * @title TWAP Conditional Order * @author mfw78 @@ -57,9 +67,63 @@ contract TWAP is BaseConditionalOrder { twap.t0 = uint256(composableCow.cabinet(owner, ctx)); } + /** + * @dev Validate the bundle FIRST so that invalid configurations (bad token, invalid + * `n`, invalid `t`, etc.) still surface as `OrderNotValid(...)` exactly like before, + * rather than being shadowed by the polling-hint branches below. `validate()` is + * idempotent — `orderFor()` (called later) calls it again, but it is `pure` and + * cheap, so the duplication is benign. + */ + TWAPOrder.validate(twap); + + /** + * @dev Precise polling hints for watch towers. + * + * `IConditionalOrder` defines `PollTryAtEpoch` and `PollNever` specifically for + * watch-tower polling optimisation, but `TWAP.sol` historically reverted with the + * generic `OrderNotValid("not within span")` (and `orderFor` would revert with + * `OrderNotValid("before twap start")` / `"after twap finish"`) — neither of which + * tells a watch tower when to retry. The branches below replace those generic + * reverts with precise polling hints; the existing `OrderNotValid(NOT_WITHIN_SPAN)` + * remains as a defensive fallback at the bottom (should be unreachable). + */ + + // Before the first part starts → tell the watch tower to retry at `t0`. + if (block.timestamp < twap.t0) { + revert IConditionalOrder.PollTryAtEpoch(twap.t0, BEFORE_FIRST_PART); + } + + // After the last part has ended → tell the watch tower to stop polling. + // `validate()` above guarantees `n > 1` and `t > 0`, so `twap.n * twap.t` cannot + // underflow / be zero here. The end timestamp is exclusive: `block.timestamp == + // t0 + n*t` is already done. + if (block.timestamp >= twap.t0 + twap.n * twap.t) { + revert IConditionalOrder.PollNever(ALL_PARTS_SETTLED); + } + order = TWAPOrder.orderFor(twap); - /// @dev Revert if the order is outside the TWAP bundle's span. + /** + * @dev If `block.timestamp > order.validTo` we are between parts of an in-progress + * TWAP (the current part's span has elapsed but the next part hasn't started yet). + * Compute the next part's start timestamp and tell the watch tower to retry then. + * + * Math: `part = (block.timestamp - twap.t0) / twap.t` is the 0-indexed current part; + * the next part starts at `twap.t0 + (part + 1) * twap.t`. Bounds are guaranteed by + * the two checks above: `block.timestamp >= twap.t0` and + * `block.timestamp < twap.t0 + twap.n * twap.t`, so `part < twap.n` and + * `(part + 1) * twap.t <= twap.n * twap.t` cannot overflow under the same bounds + * that `TWAPOrderMathLib.calculateValidTo` already asserts on. + */ + if (block.timestamp > order.validTo) { + uint256 nextPartStart = twap.t0 + (((block.timestamp - twap.t0) / twap.t) + 1) * twap.t; + revert IConditionalOrder.PollTryAtEpoch(nextPartStart, BETWEEN_PARTS); + } + + /// @dev Defensive fallback — the three branches above should cover every case + /// where `block.timestamp > order.validTo` for a valid TWAP; this keeps the original + /// taxonomy entry so any unknown edge surfaces as a well-known error rather than + /// returning a stale order. if (!(block.timestamp <= order.validTo)) { revert IConditionalOrder.OrderNotValid(NOT_WITHIN_SPAN); } diff --git a/test/ComposableCoW.twap.t.sol b/test/ComposableCoW.twap.t.sol index 09c47ee..93875be 100644 --- a/test/ComposableCoW.twap.t.sol +++ b/test/ComposableCoW.twap.t.sol @@ -16,7 +16,7 @@ import { BaseComposableCoWTest } from "./ComposableCoW.base.t.sol"; -import {TWAP, NOT_WITHIN_SPAN} from "../src/types/twap/TWAP.sol"; +import {TWAP, NOT_WITHIN_SPAN, BEFORE_FIRST_PART, ALL_PARTS_SETTLED, BETWEEN_PARTS} from "../src/types/twap/TWAP.sol"; import { TWAPOrder, INVALID_SAME_TOKEN, @@ -197,7 +197,9 @@ contract ComposableCoWTwapTest is BaseComposableCoWTest { // Warp to current time vm.warp(currentTime); - vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.OrderNotValid.selector, BEFORE_TWAP_START)); + // before `t0` now surfaces as `PollTryAtEpoch(t0, BEFORE_FIRST_PART)` so watch + // towers know exactly when to retry instead of seeing a generic `OrderNotValid`. + vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.PollTryAtEpoch.selector, startTime, BEFORE_FIRST_PART)); twap.getTradeableOrder(address(0), address(0), bytes32(0), abi.encode(o), bytes("")); } @@ -223,7 +225,9 @@ contract ComposableCoWTwapTest is BaseComposableCoWTest { // Warp to expiry vm.warp(currentTime); - vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.OrderNotValid.selector, AFTER_TWAP_FINISH)); + // post total span now surfaces as `PollNever(ALL_PARTS_SETTLED)` so watch + // towers can drop this watch entirely instead of polling forever. + vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.PollNever.selector, ALL_PARTS_SETTLED)); twap.getTradeableOrder(address(0), address(0), bytes32(0), abi.encode(o), bytes("")); } @@ -251,7 +255,11 @@ contract ComposableCoWTwapTest is BaseComposableCoWTest { // Warp to outside of the span vm.warp(currentTime); - vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.OrderNotValid.selector, NOT_WITHIN_SPAN)); + // between parts of an in-progress TWAP now surfaces as + // `PollTryAtEpoch(nextPartStart, BETWEEN_PARTS)` so watch towers can skip the + // dead time between parts instead of polling every block. + uint256 nextPartStart = startTime + (((currentTime - startTime) / FREQUENCY) + 1) * FREQUENCY; + vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.PollTryAtEpoch.selector, nextPartStart, BETWEEN_PARTS)); twap.getTradeableOrder(address(0), address(0), bytes32(0), abi.encode(o), bytes("")); } @@ -279,8 +287,11 @@ contract ComposableCoWTwapTest is BaseComposableCoWTest { // Warp to the current time vm.warp(currentTime); - // The below should revert - vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.OrderNotValid.selector, BEFORE_TWAP_START)); + // before `t0` (here pinned to `ctxBlockTimestamp` via the value factory) + // surfaces as `PollTryAtEpoch(t0, BEFORE_FIRST_PART)`. + vm.expectRevert( + abi.encodeWithSelector(IConditionalOrder.PollTryAtEpoch.selector, ctxBlockTimestamp, BEFORE_FIRST_PART) + ); composableCow.getTradeableOrderWithSignature(address(safe1), params, bytes(""), new bytes32[](0)); } @@ -308,8 +319,8 @@ contract ComposableCoWTwapTest is BaseComposableCoWTest { // Warp to the current time vm.warp(currentTime); - // The below should revert - vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.OrderNotValid.selector, AFTER_TWAP_FINISH)); + // post total span now surfaces as `PollNever(ALL_PARTS_SETTLED)`. + vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.PollNever.selector, ALL_PARTS_SETTLED)); composableCow.getTradeableOrderWithSignature(address(safe1), params, bytes(""), new bytes32[](0)); } @@ -518,16 +529,24 @@ contract ComposableCoWTwapTest is BaseComposableCoWTest { } catch (bytes memory lowLevelData) { bytes4 receivedSelector = bytes4(lowLevelData); - // Should have reverted if the `numSecsProcessed` > `frequency * numParts` - if (block.timestamp == endTime && receivedSelector == IConditionalOrder.OrderNotValid.selector) { + // end-of-TWAP now surfaces as `PollNever` instead of `OrderNotValid`. + // Between-parts (only possible when `span > 0`) surfaces as `PollTryAtEpoch`. + if (block.timestamp == endTime && receivedSelector == IConditionalOrder.PollNever.selector) { break; } else if (block.timestamp > endTime) { - revert("OrderNotValid() should have been thrown"); + revert("PollNever() should have been thrown"); } - // The order should always be valid because there is no span - if (span == 0 && receivedSelector == IConditionalOrder.OrderNotValid.selector) { - revert("OrderNotValid() should not be thrown"); + // For `span == 0` there is no between-parts gap, so a `PollTryAtEpoch` is a + // bug. Any `OrderNotValid` should be impossible for in-window TWAP. + if ( + span == 0 + && ( + receivedSelector == IConditionalOrder.OrderNotValid.selector + || receivedSelector == IConditionalOrder.PollTryAtEpoch.selector + ) + ) { + revert("no between-parts gap expected for span==0"); } } vm.warp(block.timestamp + 1 seconds); @@ -625,6 +644,76 @@ contract ComposableCoWTwapTest is BaseComposableCoWTest { assertTrue(validTo == expectedValidTo); } + // --- TWAP polling hints --- + + /// @dev Before `t0`, reverts with `PollTryAtEpoch(t0, "before first part")` so a watch + /// tower knows the exact retry timestamp rather than seeing a generic `OrderNotValid`. + function test_twap_reverts_with_PollTryAtEpoch_before_t0() public { + uint256 startTime = block.timestamp + 1 days; + TWAPOrder.Data memory o = _twapTestBundle(startTime); + + // Sit at a timestamp strictly before `t0`. + vm.warp(startTime - 1); + + vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.PollTryAtEpoch.selector, startTime, BEFORE_FIRST_PART)); + twap.getTradeableOrder(address(0), address(0), bytes32(0), abi.encode(o), bytes("")); + } + + /// @dev After every part has been settled (current time >= t0 + n*t), reverts with + /// `PollNever("all parts settled")` so a watch tower can drop this watch entirely. + function test_twap_reverts_with_PollNever_after_total_span() public { + uint256 startTime = 1_000_000; + TWAPOrder.Data memory o = _twapTestBundle(startTime); + + // Sit at the first timestamp where every part has finished. Per spec, the end + // timestamp is exclusive — `block.timestamp == t0 + n*t` is already done. + vm.warp(startTime + uint256(FREQUENCY) * uint256(NUM_PARTS)); + + vm.expectRevert(abi.encodeWithSelector(IConditionalOrder.PollNever.selector, ALL_PARTS_SETTLED)); + twap.getTradeableOrder(address(0), address(0), bytes32(0), abi.encode(o), bytes("")); + } + + /// @dev Between parts of an in-progress TWAP (current part's span elapsed but next + /// part not yet started), reverts with `PollTryAtEpoch(nextPartStart, "between parts")`. + function test_twap_reverts_with_PollTryAtEpoch_between_parts() public { + uint256 startTime = 1_000_000; + TWAPOrder.Data memory o = _twapTestBundle(startTime); + + // Sit between part 0 and part 1: part 0's span ends at `t0 + span - 1`, so any + // timestamp in `[t0 + span, t0 + frequency)` is between parts. + uint256 currentTime = startTime + SPAN + 30; // 30s into the dead time + vm.warp(currentTime); + + uint256 expectedNextPartStart = startTime + (((currentTime - startTime) / FREQUENCY) + 1) * FREQUENCY; + // For this configuration, that lands exactly at `t0 + frequency` (start of part 1). + assertEq(expectedNextPartStart, startTime + FREQUENCY); + + vm.expectRevert( + abi.encodeWithSelector(IConditionalOrder.PollTryAtEpoch.selector, expectedNextPartStart, BETWEEN_PARTS) + ); + twap.getTradeableOrder(address(0), address(0), bytes32(0), abi.encode(o), bytes("")); + } + + /// @dev Regression: a timestamp inside a valid part still returns the order (no revert). + /// Guards against the polling-hint branches accidentally rejecting in-window TWAPs. + function test_twap_existing_within_span_behavior_unchanged() public { + uint256 startTime = 1_000_000; + TWAPOrder.Data memory o = _twapTestBundle(startTime); + + // Sit inside part 0's span (1s after t0; span is 5 minutes, so well within). + vm.warp(startTime + 1); + + // Should not revert. + GPv2Order.Data memory order = + twap.getTradeableOrder(address(0), address(0), bytes32(0), abi.encode(o), bytes("")); + + // Order's validTo must be in the future (basic sanity). + assertGt(order.validTo, block.timestamp - 1); + assertEq(address(order.sellToken), address(o.sellToken)); + assertEq(address(order.buyToken), address(o.buyToken)); + assertEq(order.sellAmount, o.partSellAmount); + } + // --- Helper functions --- function createOrder(Safe safe, TWAPOrder.Data memory twapBundle, IERC20 sellToken, uint256 sellAmount)